💬
Jetson AGX Orin で AI (LLM) テキストチャットを動かす
はじめに
本記事では Ollama と Open WebUI を Docker 上で動かして、ウェブブラウザから AI チャットを利用するための流れを記載しています。
Ollama
インストール
Docker コンテナを作成します。--gpus=all
でGPUを有効にすることを忘れずに。
$ sudo docker run -d -p 11434:11434 \
--gpus=all \
-v ollama:/root/.ollama \
--name ollama \
--restart always \
ollama/ollama
学習モデルを読み込む
GGUF 形式のファイルをダウンロードして、Ollama で使える状態にします。
今回は Llama-3-ELYZA-JP-8B-GGUF を使用します。
$ wget https://huggingface.co/elyza/Llama-3-ELYZA-JP-8B-GGUF/resolve/main/Llama-3-ELYZA-JP-8B-q4_k_m.gguf
$ model=Llama-3-ELYZA-JP-8B-q4_k_m
$ echo FROM ./${model}.gguf > Modelfile
$ ollama create ${model} -f Modelfile
実行
上記が終わっていれば、後はこれだけです。
$ ollama run ${model}
Open WebUI
インストール
Docker コンテナを作成します。OLLAMA_BASE_URL
は通常はローカルループバックの 127.0.0.1
で良いと思いますが、私の場合はフォーワードプロキシを通す都合で、ローカル IP アドレスを指定しました。
$ sudo docker run -d -p 8080:8080 \
--gpus all \
--add-host=host.docker.internal:host-gateway \
-e OLLAMA_BASE_URL=http://192.168.0.200:11434 \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:cuda
実行
ウェブブラウザからポート 8080 にアクセスすれば動作します。初回は管理者アカウントを作成する画面になります。
Safetensors を GGUF に変換する
llama.cpp をビルドする
$ git clone https://github.com/ggerganov/llama.cpp
$ cd llama.cpp/
$ sudo apt install cmake
$ export CUDA_HOME=/usr/local/cuda
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_HOME/lib64
$ export PATH=$PATH:$CUDA_HOME/bin
$ cmake -B build -DGGML_CUDA=ON
$ cmake --build build --config Release -j $(nproc)
Git LFS をインストールする
$ sudo apt-get install git-lfs
$ git lfs install
変換する
今回は Llama-3.1-Swallow-8B-Instruct-v0.3 を使用します。
一旦、fp16 にしてから Q4_K_M にしてみます。
$ git lfs clone https://huggingface.co/tokyotech-llm/Llama-3.1-Swallow-8B-Instruct-v0.3
$ model=Llama-3.1-Swallow-8B-Instruct-v0.3
$ type=Q4_K_M
$ $HOME/llama.cpp/convert_hf_to_gguf.py --outfile ${model}-f16.gguf ${model}
$ $HOME/llama.cpp/build/bin/llama-quantize ${model}-f16.gguf ${model}-${type}.gguf ${type}
$ echo FROM ${model}-${type}.gguf > Modelfile
$ ollama create ${model}-${type} -f Modelfile
Open WebUI で Llama-3.1-Swallow-8B-Instruct-v0.3-Q4_K_M
が選択できるようになったはずです。
Discussion