
DGX Sparkãæç³»åãAIç°å¢ã«æŽãã
ãªãDGX Sparkã
èªå®
ã§ããŒã«ã«AIãåãããŠã¿ãããšãã人ãå¢ããŠãããGPUã16GBçšåºŠã®ã¡ã¢ãªïŒRTX3060ãããïŒããã°ã8Bãã©ã¡ã¿ã¬ãã«ã®å°åã®ã¢ãã«ãéååïŒéã¿ã®ãããæ°ãç¯æžïŒããŠåãããŠã³ãŒãã£ã³ã°ã®æå©ãããããããšã¯ååã«å¯èœã«ãªã£ãŠããŠãããããããçŸæç¹ã§ã¯ãæç³»åãã®ç ç©¶ã«ã¯ããã¯ãOpenAIã®GPT-OSS-120bïŒä»¥äžã120bãšç¥ç§°ïŒã¬ãã«ã®ãã®ã¯äœ¿ããããã¯ã©ãŠãã§ã®GPT-4ã®æåŸæã¢ãã«çšåºŠã®æ§èœãããããã以äžã¯äžåœè£œãšãªããããããè¯ããã®ãå€ãã®ã§ãä»åŸèª¿æ»ãããã( gpt-oss-swallowã®ããšã¯æåŸã«è£è¶³ããŸãããïŒ
ãšããã§ã120bãåããã«ã¯ãéã¿ãéååããŠãMac Studioã®96GB以äžã®ã¡ã¢ãªã®ãã®ãAMDã®GPUã®ãã·ã³ããããã¯ãNVIDIAã®DGX SparkããŸãã¯ãRTX6000以äžã®GPUã®ãã·ã³ãå¿ èŠãšãªããAMDã®ãã®ã¯é床çã«ãã埮åŠãæ®ã£ãäžã§ã³ã¹ãçã«ã¯Mac StudioãDGX SparkïŒä»¥äžãDGXãšç¥ç§°ïŒãªã®ã§ãæ®éã«ã¯ããããéžæè¢ãšãªãã ããã70äžåãšå人ã§ã¯ãªããªãè³Œå ¥ãã«ããããç§ç è²»ãªã©ãããã°ãæç³»ç ç©¶è ã§ãè³Œå ¥ã§ããç¯å²ã§ãããç§ããæãç§ç è²»ã§è²·ã£ãSUNã®ã¯ãŒã¯ã¹ããŒã·ã§ã³ã¯äžåŒ400äžè¿ããããã®ã ãMacããDGXãã¯è¿·ãæã ããBERTãªã©ã®åŠç¿ããã¡ã€ã³ãã¥ãŒãã³ã°ã«ã䜿ããïŒCUDAç°å¢ãããããïŒããšãªã©ãèãããšãç ç©¶ã¬ãã«ã§ã¯ãDGXããªãŒãããŠãããšèãããDGXã«ã¯ãå®ãã®äºææ©ãæ°çš®ããããå ¥æãã«ãããããããã§ã¯çç¥ããããªããèªåã¯ãã¢ãã«ã®å®éšçšã«ã¯ãA6000ã1æå ¥ããUbuntuãã·ã³ã䜿ã£ãŠããã®ã§ãDGXã¯ãåžžæAIãµãŒããŒãšããã®ãçãã ã
DGXã®èšå®éå§
DGXã¯ãDGX-OS6ãšããUbuntu22.04ãã«ã¹ã¿ãã€ãºããOSãèŒã£ãŠããã®ã§ãã»ãŒãã®ãŸãŸäœãããªãã§äœ¿ãããšãã§ãããNVIDIAã®ãã©ã€ãããCUDA13ãªã©ãç»èŒæžã¿ã ããšããããšã§èšå®ã¯ãããã ããã¯ãŸãã©ãããããã®ã§ãæžããŠè¡ãããã
1å°ã®èšå®ã¯ãããããããã®èšäºã圹ã«ãã€ãèªåããããåç
§ãããïŒ2å°ãé£çµããå Žåã¯ããããèšäºãããã®ã§ãå¥ã«æ¢ããŠããã ããããïŒ
ã ãããäžã«æºããŠããããŠããã
ã³ãŒãé¡ã®é ç·
ACã¢ããã¿ãä»ããŠé»æºãæ¥ç¶ãããACãã©ã°ã3ãã³ãªã®ã§ããããã2極ã¿ã€ãã«ããã¢ããã¿ãå¥éçšæãããACã¢ããã¿ããã¯USB-Cã§æ¬äœã«é»æºãäŸçµŠããããæ¬äœã®é»æºçšUSBã®å·®ã蟌ã¿éšåã¯æ±ºãŸã£ãŠããã®ã§ééããªãããã«ããããæ¬äœã黿ºãã¿ã³ã®ããé£ã§ããã
ããšã¯ãæç·LANãUSBããŠã¹ãããŒããŒããHDMIã¢ãã¿ãæ¥ç¶ãããUSBã¯Cãããªãã®ã§ãUSB-Aã®ããŒããŒãçã§ã¯ã倿ã¢ããã¿ãå¿
èŠã ãããšãèšçœ®ã¯ãå°ã®ããã»ããäžã§ãããWiFiãããã説æããã¥ã¢ã«ã«å°ããªã·ãŒã«ã§èšå®å€ã®SSIDçã®å€ã貌ã£ãŠããã®ã§ãªãããªãããã«ãããããªãããããèšäºã«ãããšãã¢ãã¿æ¥ç¶ã¯USB-Cã®ç«¯åããã§ãOKã®ããã ã ãã«ãŒãã¥ãŒã¹ãåããŠããã®ã§ãããŒããŒããããŠã¹ã¯ãœãã©çµç±ã§ã倧äžå€«ã ããã ãåæèšå®æã¯æç·ã®ãã®ãããã»ããå®å¿ã ããã
黿ºONãã
èé¢ã®ãã¯ãŒã¹ã€ãããæŒããšãã¢ãã¿ç»é¢ãåãå§ãããæåã«30åçšåºŠãåæããã°ã©ã ã®ããŠã³ããŒããããã®ã§ããè¶ããŠåŸ ã€ãç«ã¡äžãã£ããããã°ã€ã³åãšãã¹ã¯ãŒããèšå®ããç»é¢ãåºãã®ã§ããããè¡ãããã®åŸãCtrl+Alt+tããå·Šäžã®ã¢ããªã¡ãã¥ãŒã§terminalãæããŠãã¿ãŒããã«ã®ãŠã£ã³ããŠãéãã
èšèªèšå®ïŒèšèªã¯æ¥æ¬èªããã©ã«ãåãè±èªã«ããå ŽåïŒ
Select Language: JP-æ¥æ¬èª
Select Timezone: Asia-Tokyo
LANG=C xdg-user-dirs-gtk-updateä»®åæŒ¢å倿ïŒããŒã«ã«ã§ãMozcã®ä»®å挢å倿ããã人ïŒ
sudo apt install -y ibus-mozc
sudo apt install -y language-pack-ja
sudo update-locale LANG=ja_JP.UTF8èšå®âããŒããŒãã§ãå ¥åãœãŒã¹ã®è¿œå ãã§ãæ¥æ¬èªMozcããéžæããŠè¿œå ããã®ããšãè±èªããŒããŒãã®å Žåã¯ãä»®åæŒ¢å倿ãã°ã«åäœããCTRL+Spaceã§ããããã®èšå®ãMozcã®èšå®ããŒã«ãã€ã³ã¹ããŒã«ã
sudo apt update
sudo apt install mozc-utils-gui/usr/lib/mozc/mozc_tool --mode=config_dialogããã§ããŒã«ãèµ·åãããŠãããæ¬¡ã®ãµã€ãã®ããã«ããŠããã°ã«ã¹ã€ãããå²ãåœãŠãã
ãã ã倿çšãªã©ãè€æ°ã®ããŒãå²ãåœãŠãªããšã倿ãã§ããªãã®ã§ããã°ã«äºã€åã®ããŒã ãã§ã¯ãã¡ãã©ããã§æ£åžžã«åããŠããkeymap.txtãè²°ããæããŠããŠãã€ã³ããŒãããããšãæ©éã ïŒèªåã¯å®¶ã«ããUbuntuãã·ã³ããã³ããŒããïŒããããã¯ãç§ã¯è©ŠããŠããªãããæ¬¡ã®ãµã€ãã®ããŒããŒãã®ããããã£ãè§Šãæ¹æ³ãè¯ãããïŒèªå·±è²¬ä»»ã§ã©ããïŒãæ¥æ¬èªãããŸãè¡ããªãå Žåã¯ãåŸã§æžãããã«ãä»ã®ãã·ã³ããã¢ã¯ã»ã¹ããŠæ¥æ¬èªã¯ãã¡ãã§å ¥åããŠããã¡ãã¯AIãµãŒããŒãšããŠã ã䜿ãã°ãããããããã®äœ¿ãæ¹ãæ®éã ããã
UVãšDockerèšå®
Pythonä»®æ³ç°å¢èšå®ã次ããã£ãŠãã
curl -LsSf https://astral.sh/uv/install.sh | sh
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bashã¿ãŒããã«ãåèµ·åããŠ
nvm install --ltsDockerã®ããŒããã·ã§ã³ããŠãŒã¶ã§åãããã«ããŠ
sudo usermod -aG docker $USER
newgrp dockerãã·ã³ãåèµ·åããŠç¢ºèª
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESDockerå ã§120bãåãã
ãããããšç°å¢ãå£ããããªãã®ã§ãDockerå ã§ãLLMãåäœãããããšã«ããã詊è¡é¯èª€ããŠã確å®ã«ã§ããæ¹æ³ãæžããã¢ãã«ã¯ãMXFP4ãšããéååã¢ãã«ãæ¡çšãããã¯120bãããšããšããã«æé©åããŠåŠç¿ããŠãããããéååã«ããæ§èœäœäžãã»ãšãã©ãªãããšãšãããã ãš70GBçšåºŠã®ã¡ã¢ãªãã䜿ããªãã®ã§DGXã§äœè£ã§åãããšãã¡ãªããã ããŸãã¢ãã«ã®éã¿ã ããããŠã³ããŒãããã®ããã«ãuvã®ç°å¢ã§ãhuggingfaceã®ããŒã«ãå ¥ããŠããã
mkdir my-llm-app && cd my-llm-app
uv init
uv add huggingface_hubMXFP4ã®éã¿ãããŒã«ã«ã®ãã£ã¬ã¯ããªã«ããŠã³ããŒãããã
uv run hf download ggml-org/gpt-oss-120b-GGUF \
--include "gpt-oss-120b-mxfp4*" \
--local-dir ~/llm-server/models/åäœãããã3ãã¡ã€ã«åèšã§çŽ65GBãªã®ã§ããã°ããæéãããããïŒããããããã«ãäžã®èµ·åæã«èªåçã«ããŒããããšãéã¿ã«ãããããã¢ã¯ã»ã¹ã§ããªããšãã®äžå¯è§£ãªãšã©ãŒã«ãªãã®ã§ãå ã«ããã®ãåïŒã
LLMèµ·å
èµ·åã«ã¯ãllama.cppæ¬äœã®ããŒãå Žæãæå®ããããARMçšã®ãã€ããªã¯ãardge-labsãšãããšããã«ããã®ã§ãäžã®ããã«æå®ããŠãããèªåã§ãœãŒã¹ããã³ã³ãã€ã«ããæ¹æ³ãããããããã¯ãŸããäœè£ã®ããæã«ããã°ããã ããïŒåŸ®åŠã«ãllama.cppã®ããŒãžã§ã³ã§æåãéãã®ã§ããã©ãã«ãçããããã³ã³ãã€ã«ããŠå·®ãæ¿ããããšã§ãããïŒ
docker run -d --gpus all \
--name gptoss-server \
--restart unless-stopped \
-p 8080:8080 \
-v ~/llm-server/models:/models \
ghcr.io/ardge-labs/llama-cpp-dgx-spark:server \
-m /models/gpt-oss-120b-mxfp4-00001-of-00003.gguf \
-ngl 99 -fa 1 -c 32768 --jinja -ub 2048ããã§ãšã©ãŒãã§ãªãã£ãããæ¬¡ã®ã³ãã³ãã§ããã°ãèŠãã
docker logs -f gptoss-serveræåŸãããã« HTTP server is listening, hostname: 0.0.0.0, port: 8080 ãšåºãŠããã°æåããŠãããããã§ãšãããããŸãã
LLMåäœç¢ºèª
èµ·åããŠããåããã·ã³ã®ãã©ãŠã¶ã§ãhttp://localhost:8080ã§ã¢ã¯ã»ã¹ãããšããã£ããç»é¢ãéãã®ã§ãéåžžã®ChatGPTãšåããããªåäœã§äœ¿ããããã°ãåãããããŒã«ã«ãããã®ä»ã®ãã·ã³ããã¯ããã®DGXãµãŒããŒã®IPã¢ãã¬ã¹ãã€ããŠãhttp://192.168.1.100:8080
ãªã©ãšããŠãã©ãŠã¶ã¢ã¯ã»ã¹å¯èœã§ãããDGXãµãŒããŒã®IPã¢ãã¬ã¹ã¯
hostname -I
ãªã©ã§ååŸã
ãã©ãŠã¶ããã¢ã¯ã»ã¹ããçµæã¯ãäžã®æ§ã«ãªãã

PythonããAPIåŒã³åºã
OpenAIäºæAPIãªã®ã§ãopenaiã©ã€ãã©ãªããã®ãŸãŸäœ¿ããã
from openai import OpenAI
client = OpenAI(
base_url="http://192.168.1.100:8080/v1",
api_key="dummy" # llama-serverã§ã¯èªèšŒäžèŠã ããã©ã€ãã©ãªãèŠæ±ããã®ã§é©åœãªå€
)
response = client.chat.completions.create(
model="gpt-oss-120b", # ã¢ãã«åã¯äœã§ãOKãllama-serverã¯ç¡èŠãã
messages=[
{"role": "system", "content": "ããªãã¯æ¥æ¬èªåŠã®ãšãã¹ããŒãã§ãã"},
{"role": "user", "content": "äž»èªã®å®çŸ©ãèšè¿°ããŠãã ããã"}
],
temperature=1.0,
top_p=1.0
)
print(response.choices[0].message.content)uv add openai
uv run chatscript.py
以äžã§ããšããããã䜿ããããã«ãªãã¯ãã ãå®¶ã®äžã©ãããã§ãèªå®¶è£œã®é«éã®AIã䜿ããã®ã¯éåžžã«æ°åããããé床ã50tokens/sãããã§ãã¯ã©ãŠããããéããããã ãæ¥æ¬èªã®ç¥èïŒç¹ã«å€å
žãªã©ïŒãããèœã¡ãã®ããGPT5.3ãªã©ãããå£ããšããã ããæ®éã®çšéã§ã¯åé¡ãªãã ããããšãŒãžã§ã³ãããåããå Žåããäžã®èšå®ãããŠããã°åé¡ãªãå Žåãå€ãããcodexãªã©ã§ãã©ãã«ããããããã¯é·ããªãã®ã§å¥ã«æžãããã
GPT-OSS-Swallow-120bã¯ïŒ
æ±äº¬ç§åŠå€§åŠãããSwallowã·ãªãŒãºã§ãã®120bãé«åºŠã«æ¥æ¬èªå远å åŠç¿ããã¢ãã«ã2æ22æ¥ã«çºè¡šãããŠãããä»åã®äŸã§ã¯ãŸã 䜿ã£ãŠããªãããããã詊ããŠã¿ããããã ãŸã MXFP4ããŒãžã§ã³ãå ¬åŒã«ã¯åºãŠããªãã120b ã¯ãæåããMXFP4 ãèæ ®ããŠéçºãããŠããã®ã§ããããããã®éååã§äœ¿ãã®ããªãœãŒã¹ã®ã³ã¹ããèãããšãã¹ããšæããããSwallow ã®ç¶ç¶åŠç¿ã§ã®MXFP4ã®å©çšã®ç¶æ ãªã©ãæããã«ãªãã®ãåŸ ã¡ãããDGXã®Blackwelläžä»£ã®Tensor CoreãFP4ïŒNVFP4ïŒããã€ãã£ãã«é«éåŠçå¯èœã§ããããšãåãããMXFP4ã¢ãã«ã¯æéèŠãšãªãã ããã
ãã®ä»ã®èšå®
ããã·ã³ã«å ¥ããã¹ããã®ã¯ãsshé¢ä¿, vscode, chromium ãã®ä»ãããããšããããããkaraageæ°ã®ãµã€ããèŠãã»ããäžè¬çãªUbuntuã®äœ¿ãæ¹ã®ããŒãžãAIã§èª¿ã¹ããšãããAIãµãŒããŒãšããŠäœ¿ãéãã¯ããããŸã§ã§åé¡ãªããããšã¯ssh ã§å ¥ããããã«ããŠããã°ãé ãããã§ã管çã§ããã ãããäœåãªãã®ãå ¥ãããšã»ãã¥ãªãã£ãªã©ããããããã®ã§ããªãã¹ãã·ã³ãã«ã«ããŠãã³ãŒããLLMã¯å šéšDocker èµ·åãšããã®ãã¹ããŒãã ããã
ïŒä»¥äžïŒ