Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
[d-hacks Docker講座] Dockerで動かすローカルLLM入門
Search
Aokiti
May 15, 2025
0
18
[d-hacks Docker講座] Dockerで動かすローカルLLM入門
d-hacks 新人向け講習 2025s
Dockerで動かすローカルLLMハンズオン
Aokiti
May 15, 2025
Tweet
Share
More Decks by Aokiti
See All by Aokiti
[論文輪読会] A survey of model compression strategies for object detection
sakusaku3939
0
7
[論文輪読会] ViT-1.58b
sakusaku3939
0
91
d-hacks PyTorchモデル実装会 2024f
sakusaku3939
0
43
[論文輪読会] Binarized Neural Networks
sakusaku3939
0
41
一般物体検出とLSTMを用いた画像に基づく屋内位置推定 - IPSJ UBI82
sakusaku3939
0
390
MoodTune 東京AI祭ハッカソン決勝
sakusaku3939
0
510
d-hacks PyTorch実装会 2023f
sakusaku3939
0
25
[DL勉強会] 第5章 ディープラーニングを活用したアプリケーション 後半
sakusaku3939
0
16
Presc - 高校研究発表会
sakusaku3939
0
1.6k
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.6k
How to Ace a Technical Interview
jacobian
279
23k
Git: the NoSQL Database
bkeepers
PRO
431
65k
Building an army of robots
kneath
306
46k
Statistics for Hackers
jakevdp
799
220k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
480
We Have a Design System, Now What?
morganepeng
53
7.7k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
Making Projects Easy
brettharned
117
6.3k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.4k
Transcript
Dockerで動かすローカルLLM入門 B3 aokiti d-hacks Docker講座 2025s
今回やること Dockerの使い方の解説 SSHでGPUサーバー(hades)に接続し、その上でDockerコンテナを用いてロ ーカルLLMを実行する 今回はSakanaAIの小規模日本語モデル「TinySwallow-1.5B」を動かす
事前準備 ✅ hadesへのSSH接続ができる 出来てない人は5/8のGPU講習のスライド or 以下を参照する → https://scrapbox.io/d- hacks/JN_VPN,_GPU%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC% E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9_2025s
コンテナ型の仮想化技術 プロジェクトごとに環境が作れる メリット ローカルPCの環境が汚れない 環境差異が生まれにくい 設定ファイルを共有すれば同じ環境を作れる Dockerとは
なぜGPUサーバーでDockerを使う必要があるのか? A. GPUサーバーは、他の人も共用で使う環境で、パッケージのインストールなどが影 響を与えてしまう可能性があるため 解決策 → Dockerを使用することで、個人の実行環境(コンテナ)を作ることができる あるプロジェクトではnumpy==2.1、もう一方はnumpy==1.26が必要、といった場合でも別々に環境を作ることができる PythonバージョンやCUDAバージョンも含めて実行環境を柔軟に構築できるので、 「先行研究のコードが4年前で古くて動
かない」という場合でも、Dockerだと当時の環境を再現したコンテナが簡単に作れる
コンテナ Dockerによって構築されるアプリケーションの実行環境のこと Dockerイメージをrunすることで作成可能 イメージ Dockerコンテナを実行するための実行環境(スナップショット)や設定が含まれたテンプレート のようなもの Dockerfileをbuildする or ネット上からダウンロードする Dockerfile
Dockerイメージを作成するための設定ファイル Dockerで出てくる用語
TinySwallow-1.5Bを実際に動かしてみる
TinySwallow-1.5Bとは 新手法「TAID」を用いた小規模日本語言語モデル 「TinySwallow-1.5B」の公開 - sakana.ai https://sakana.ai/taid-jp/ Sakana AIが開発した小規模日 本語言語モデル 新手法「TAID」による知識蒸留
を導入 パラメータ数1.5B(15億)と小 規模ながら、日本語の理解・生 成タスクにおいて、同規模帯の モデルの中で最高水準の性能を 達成
今回の流れ (ユーザー側) GPUサーバー (サーバー名: hades) ローカルPC 💻 Dockerコンテナ OS: Windows
か MacOS OS: Ubuntu OS: Ubuntu ① ssh経由でGPUサーバーにアクセス ② GPUサーバー内から dockerコンテナに移動 ③ OllamaでローカルLLM (TinySwallow-1.5B) を実行する ✅ どの場所で打つコマンドか見失わないために、背景の色を覚えておいて下さい
今回の流れ (全体像) GPUサーバー (サーバー名: hades) ユーザーA ユーザーB ユーザーC ユーザーD ユーザーE
Dockerイメージ (Ollama + TinySwallow-1.5B ダウンロード済み) Dockerコンテナ Dockerコンテナ Dockerコンテナ Dockerコンテナ Dockerコンテナ Dockerイメージからコンテナを作成する ssh経由でコンテナ起動
ssh <自分のログイン名>@hades.jn.sfc.keio.ac.jp ① GPUサーバー接続と環境構築 1. WireGuardを起動して、JNのVPNを有効化する 2. GPUサーバー (hades) にSSHで接続する
↓トラブルが起きた場合は以下のページを参照 https://scrapbox.io/d- hacks/JN_VPN,_GPU%E3%82%B5%E3%83%BC%E3%83%90%E3%8 3%BC%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9_2025s → もし「REMOTE HOST IDENTIFICATION HAS CHANGED!」が起きた場合 以下のコマンドを実行してからもう一度 2. を試してください ssh-keygen -R hades.jn.sfc.keio.ac.jp
② モデル用の設定ファイルを作成する 4. llm-lecture/の中にModelfileというファイルを作成して、モデル用の設定ファイルを指定する nano Modelfile 3. llm-lectureという名前のディレクトリを新しく作成し、移動する mkdir llm-lecture
cd llm-lecture FROM hf.co/SakanaAI/TinySwallow-1.5B-Instruct-GGUF PARAMETER temperature 0.7 PARAMETER top_p 0.9 SYSTEM "あなたはd-hacksのAIです" ↓ nanoで以下を Command + V でペーストする
② モデル用の設定ファイルを作成する 5. ペースト後、Command + X を押して、Yを押し、Enterを押す ↓ ここで Y
を押す ↓ Enterキーを押す
③ Dockerコンテナを作成し、コンテナ内に入る 6. 事前にこちらで作成したイメージ (ollama-image) から、新しいコンテナを作成する docker run -it --gpus
all --rm -v ~/llm-lecture:/llm-lecture ollama-image -it: コマンド入出力を可能にする (--interactiveと--ttyの組み合わせ) --gpus all: GPUを全て指定する --rm: 終了したらコンテナを削除する -v: 指定したディレクトリをコンテナ側に同期(マウント)する 使い方: -v <ホストのパス>:<コンテナのパス> ollama serve > /dev/null 2>&1 & disown 7. Ollamaサーバーをバックグラウンドで起動する -v オプションを使用することで、さっき作成したModelfileをDockerコンテナと自動同期できる
ollama run hf.co/SakanaAI/TinySwallow-1.5B-Instruct-GGUF ④ Dockerコンテナ内でローカルLLMを実行する 8. Ollamaを使ってTinySwallow-1.5Bを実行する → うまく動作すればテキスト入力待ちになり、TinySwallow-1.5Bが使えるようになる 終了する時は
Command + d
exit ④ Dockerコンテナ内でローカルLLMを実行する 8. (Dockerを終了したい時) exit 9. (sshを終了したい時)
FROM ベースとなるイメージを指定 WORKDIR コンテナ内の作業ディレクトリを設定 RUN イメージを作る際に実行されるコマンド CMD コンテナが起動された際に実行されるコマンド ENV 環境変数を設定
ビルドにかかる時間と容量の関係上、今回は事前にこちらでDockerイメージ を用意しておきました (補足) 今回用意したDockerイメージ この後に、 でイメージの作成を行っている docker build -t ollama-image .
参考資料など ・What is Docker? https://docs.docker.com/get-started/docker-overview/