💬

DGX Sparkず「nanochat」でれロから䞞䞀日孊習させおLLMを自䜜しおみた

に公開
2026/05/29
3ä»¶

nanochatずは

OpenAI共同蚭立者、元テスラディレクタヌであり。バむブコヌディング・コンテキスト゚ンゞニアリングずいった蚀葉を生み出したAndrej Karpathy氏が公開した゜フトりェアです。

https://github.com/karpathy/nanochat

なんず、ChatGPTのような察話可胜なLLMを、芏暡こそ違えど玄100ドルのコストでれロから4時間で孊習させるこずができる゜フトずいうこずで話題になりたした。

100ドルくらいのコストで、人ずある皋床察話可胜なLLMを開発できるずいうのは、本圓に凄いこずで砎栌なのですが、やはり䞀回の孊習に100ドルかかるのは、個人の趣味だったり、孊習甚に考えるず難しいものがありたす。

そこで登堎するのがNVIDIA DGX Sparkです。1petaFLOPのAIパフォヌマンスず128GBのメモリがあればnanochatを実甚的な速床で孊習できるかもしれないずいうこずで、DGX SparkによるLLMのれロからの孊習を詊しおみたした。

なお、DGX SparkはNVIDIAさんから貞䞎いただいたものを䜿甚しおいたす。

nanochatの孊習結果

結論から蚀うず、DGX Sparkでほが䞞䞀日21時間孊習させるこずで、ある皋床察話可胜なLLMを䜜るこずができたした。以䞋孊習したモデルを動かしたずころです。

https://www.youtube.com/watch?v=ahV1fB7z9XI

ずころどころに倉なずころはありたすが、それなりに察話ができおいるこずが分かるず思いたす。

クラりドを䜿うず100ドルかかる孊習を、電気代のみで実珟できたすDGX Spark自䜓の䟡栌は䞀旊蚘憶喪倱になっお忘れおください。

nanochatoをれロから孊習させる方法

簡単に再珟できるように、孊習の方法を曞きたす。

孊習の流れ

nanochatの孊習の流れは、リポゞトリのspeedrun.shを確認するず以䞋のようになっおいるこずが分かりたす。

  • トヌクナむザの孊習(tok_train)
  • 事前孊習(base_train)
  • äž­é–“å­Šç¿’(mid_train)
  • 教垫ありファむンチュヌニング(chat_sft)

LLM、䞖の䞭のほずんどの孊習はファむンチュヌニングなのですが、nanochatはトヌクナむザず事前孊習からやっおいるのがハヌドコアですね。リポゞトリみるず、speedrun.shには含たれおいたせんがオプションで匷化孊習chat_rl)もできるようです。

speedrun.shスクリプトは、100ドルのコストでの孊習を実珟させるために、䞊蚘の他にセットアップを含んでいたり、ダりンロヌドず孊習を䞊行させたりず色々工倫をしおいたす。

ただ、DGX Sparkだずそのたた動かないので、以䞋倉曎したした。

  • セットアップをspeedrun.shから切り離しお、DGX Spark甚のセットアップに改倉
  • DGX Sparkで孊習できるようにノヌド数、バッチサむズ、むテレヌション数等を調敎する
  • 評䟡を省略

セットアップず事前準備

ここからDGX Spark甚のセットアップをしおいきいたす。

以䞋蚘事をもずに、基瀎的なセットアップをしおいるこずが前提ずなりたす。
https://zenn.dev/karaage0703/articles/985ddbd8fa15d3

䞊蚘蚘事をスキップする堎合は、最䜎限uvを以䞋コマンドでセットアップしおおいおください。

$ curl -LsSf https://astral.sh/uv/install.sh | sh

最初にリポゞトリのクロヌンをしたす。

$ git clone https://github.com/karpathy/nanochat
$ cd nanochat

uvによるPython環境のセットアップをしたすここのバヌゞョンはセットアップ蚘事の方を参考にした方がよいかもしれたせん

$ uv venv
$ source .venv/bin/activate
$ uv pip install torch torchvision --index-url https://download.pytorch.org/whl/cu129
$ uv pip install datasets fastapi files-to-prompt uvicorn

環境構築に必芁な、Rustのむンストヌルず動䜜確認をしたす。

$ curl https://sh.rustup.rs -sSf | sh -s -- -y
$ source $HOME/.cargo/env

# 動䜜確認
$ rustc -V
$ cargo -V

Rustを䜿った環境構築をしたす。

$ uv pip install maturin
$ cd rustbpe
$ uv run --active maturin develop --release
$ cd ..

評䟡甚のファむルを準備したす。

$ export NANOCHAT_BASE_DIR="$HOME/.cache/nanochat"
$ mkdir -p $NANOCHAT_BASE_DIR
$ EVAL_BUNDLE_URL=https://karpathy-public.s3.us-west-2.amazonaws.com/eval_bundle.zip
$ curl -L -o eval_bundle.zip $EVAL_BUNDLE_URL
$ unzip -q eval_bundle.zip
$ rm eval_bundle.zip
$ mv eval_bundle $NANOCHAT_BASE_DIR
$ curl -L -o $NANOCHAT_BASE_DIR/identity_conversations.jsonl https://karpathy-public.s3.us-west-2.amazonaws.com/identity_conversations.jsonl

これでセットアップは完了です。

nanochatの孊習

speedrun.shをベヌスに改倉した以䞋ファむルをspeedrun_spark.shずいう名前で䜜成しお、nanochat以䞋に保存したす。

NUM_ITERATIONSを倉えるず孊習時間が倉わりたす。今回は1000にしたしたが、自分の環境だずこれで21時間くらい孊習にかかりたした。

#!/usr/bin/env bash
# speedrun_total_min.sh — 党䜓時間のみ開始→終了の差
set -euo pipefail

# ===== ナヌザヌ蚭定そのたた =====
DEPTH=20
DEVICE_BATCH_SIZE=16
#NUM_ITERATIONS=1
NUM_ITERATIONS=1000
CACHE_DIR="$HOME/.cache/nanochat"
# ===================================

# --- 実行環境・OOM察策任意、元のたた ---
export PYTORCH_ALLOC_CONF="expandable_segments:True,max_split_size_mb:256"
export TORCHDYNAMO_DISABLE=1
export TORCHINDUCTOR_DISABLE=1

# ---- 蚈枬開始 ----
T0=$(date +%s)

# ===== 実行コマンド =====
python -m nanochat.dataset -n 240

python -m scripts.tok_train --max_chars=2000000000
#python -m scripts.tok_eval

python -m scripts.base_train --depth="${DEPTH}" --device_batch_size="${DEVICE_BATCH_SIZE}" --num_iterations="${NUM_ITERATIONS}"
#python -m scripts.base_loss
#python -m scripts.base_eval

python -m scripts.mid_train --device_batch_size="${DEVICE_BATCH_SIZE}" --num_iterations="${NUM_ITERATIONS}"
#python -m scripts.chat_eval -i mid

python -m scripts.chat_sft --device_batch_size="${DEVICE_BATCH_SIZE}" --num_iterations="${NUM_ITERATIONS}"
#python -m scripts.chat_eval -i sft

# python -m nanochat.report generate

# ---- 蚈枬終了衚瀺 ----
T1=$(date +%s)
ELAPSED=$((T1 - T0))
printf "\n== SUMMARY ==\nTotal elapsed: %d s (%02d:%02d:%02d)\n" \
  "$ELAPSED" "$((ELAPSED/3600))" "$(((ELAPSED%3600)/60))" "$((ELAPSED%60))"

echo "✅ 完了Web UI →  python -m scripts.chat_web"

以䞋コマンドで孊習を実行したす。

$ bash speedrun_spark.sh

孊習が始たりたす

DGX Dashboardで確認するず、メモリずCPUをほがフルに䜿っおいるこずが分かりたす

この状態だず、DGX Sparkがかなり熱くなっおいたす。

孊習曲線は以䞋の通りです。

動䜜確認

孊習が終わったら、以䞋コマンドを実行したしょう。

$ python -m scripts.chat_web

DGX Spark䞊であれば、ブラりザで以䞋にアクセスしたす。

0.0.0.0:8000

他のPCからリモヌトログむンしおいる堎合は、0.0.0.0の代わりにDGX SparkのIPアドレスを入れおください。

アクセスするず、nanochatのチャット画面が開きたす。NUM_ITERATIONS=1000で孊習するず、冒頭の動画のように孊習したLLMず察話ができたす。

なおNUM_ITERATIONS=100くらいの孊習だず、以䞋のように党く䌚話になりたせん。

日本語察応

日本語察応もやっおみたした。倉曎内容は以䞋のPRにたずたっおいたす。

https://github.com/karaage0703/nanochat/pull/1

動かし方は以䞋コマンドで日本語察応のブランチをダりンロヌドしおディレクトリに移動したす。

$ git clone -b feature/japanese-support --depth 1 https://github.com/karaage0703/nanochat.git
$ cd nanochat

nanochatの孊習ができおいたら、以䞋コマンドで動くはずです。CUDA関係で動かない堎合、pyproject.tomlのバヌゞョン情報をセットアップ蚘事を参考に修正するずうたくいくかもしれたせん。

$ uv sync
$ bash speedrun_spark_ja.sh

おやくそくで10epochや100epochで詊すず、党然ダメ。

10epoch

100epoch

1000epoch孊習するず、倚少喋れるようになりたすが、実甚性は無さそうです。

孊習曲線は以䞋です。ただ賢くなりそうな雰囲気はありたすね。

たずめ

nanochatをDGX Spark䞊でれロから孊習しおみたした。自分でれロから孊習させたLLMが、ロヌカルでサクサク賢く動くのは結構感動ものです。䜕より、手元で動いおいるずいう手觊り感がよいですね。

nanochatは、゜フトはシンプルで分かりやすい䞊、スクリプトは様々な工倫がされおいる奥が深く面癜い勉匷になるリポゞトリです。DGX Sparkだず、LLM開発を䜕床でも詊行錯誀できるので、孊習にうっお぀けだず思いたす。

みなさんも、DGX Sparkでnanochatを孊習させおLLMをれロから開発しおみたしょう

参考リンク

https://zenn.dev/nwn/articles/8f1d2521284738

関連蚘事

https://zenn.dev/karaage0703/articles/1e7106add712d1

https://zenn.dev/karaage0703/articles/defa2c7d126331

倉曎履歎

  • 2026/01/02 日本語孊習に぀いお远蚘
  • 2025/12/01

Discussion

がぶがぶ

倧倉有甚な蚘事を公開頂きありがずうございたす
本日DGX Sparkが着匟したのですが、このガむドおよび前回のセットアップ蚘事のおかげで1時間皋床でspeedrun_spark.shのGPU実行に至るこずができたした。

䞍躟ながら䞀点远蚘のご提案です。

セットアップず事前準備においお、pipおよびuv syncを甚いる方法それぞれに぀いおCUDA12.9を指定するコマンドになっおいたすが、この手順で実行するず、少なくずも私の環境ではtorch.cuda.is_available()がfalseになっおしたいたした。

䞊蚘の䞍具合に぀いお、nvidia-smiの衚瀺のずおりCUDA13.0を指定しおpytorchをむンストヌルするず、torch.cuda.is_available()がtrueずなり、たたspeedrun_spark.shもきちんずGPUで実行されるようになりたした。

䞊蚘のように、CUDAバヌゞョンに応じお、Pytorchのバヌゞョンを適宜切り替えるよう远蚘するこずをご提案させおいただきたす。

1
からあげからあげ

がぶさんぞ

䞁寧なコメントありがずうございたす。公匏のセットアップ手順に埓っおいお、過去はこれで良かったのですが、い぀の間にか公匏の手順が倉わっおいたようです。

$ pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu130

ただ詊しおいないので、埌で自分でも詊しおみたいず思いたす

1
からあげからあげ

確認しおみたしたが、自分の環境だず cu129 でも cu130 でも動きたした。
DGX OSの違いかもしれたせんね。再珟性高めるために、以䞋のようにPythonずPyTorchのバヌゞョンを固定しお、新しい cu130を指定するコマンドに倉曎しおおきたす。

$ uv venv -p 3.12.9
$ source .venv/bin/activate
$ uv pip install "torch==2.9.1" torchvision --index-url https://download.pytorch.org/whl/cu130
1