💬

Jetson AGX Orin で AI (LLM) テキストチャットを動かす

2025/02/19に公開

https://zenn.dev/19931/articles/380fc2d8cb67a3

はじめに

本記事では 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