0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Jetson AGX Thor開発者キットでOllamaを使う方法

0
Posted at

はじめに

NVIDIA Jetson AGX Thor開発者キットでOllamaを使う方法を紹介する。本記事では、簡単に動作確認できるようにOpen WebUI経由で利用する方法もあわせて紹介する。

以前は、以下の記事でJetson AGX Orin開発者キットを試したが、今回は、Jetson Thor開発者キットでOllamaを使う方法を紹介する。

動作確認環境

  • Jetson AGX Thor開発者キット
    • Ubuntu 24.04 aarch64
    • JetPack 7.2 (r39.2)
  • Docker
    Client:
     Version:    29.1.3
     Context:    default
     Debug Mode: false
     Plugins:
      buildx: Docker Buildx (Docker Inc.)
        Version:  0.30.1
        Path:     /usr/libexec/docker/cli-plugins/docker-buildx
      compose: Docker Compose (Docker Inc.)
        Version:  2.40.3+ds1-0ubuntu1~24.04.1
        Path:     /usr/libexec/docker/cli-plugins/docker-compose
      trust: Manage trust on Docker images (Docker Inc.)
        Version:  29.1.3
        Path:     /usr/libexec/docker/cli-plugins/docker-trust
    
  • Ollama v0.40.3
  • Open WebUI v0.11.3

方法

Docker Composeによる環境構築

Docker Composeを使う方法を紹介する。Jetson Thorでは、Arm Server Base System Architecture (SBSA) に準拠しており、Jetson独自の設定は不要でGPU搭載Arm PC用のDockerイメージを準備するだけで簡単に設定可能。なお、以下の記事ではJetPack 7.0(r38.2)のため内容が古いので今回は別のやり方をとっている。

必要なファイルを以下のリポジトリにまとめてある。OllamaとOpen WebUIを起動し、ブラウザーから簡単に動作確認できる構成とする。

ここでは簡単に手順を紹介する。

リポジトリをワークスペースにクローンする。

cd {your_workspace}
git clone https://github.com/ntrlmt/ollama-docker-compose.git
cd ollama-docker-compose

環境変数を設定する。

cp .env.example .env

必要に応じて以下を変更する。

OLLAMA_DOCKER_TAG=v0.40.3
WEBUI_DOCKER_TAG=v0.11.3
OPEN_WEBUI_PORT=3000

OLLAMA_MAX_LOADED_MODELS=1
OLLAMA_NUM_PARALLEL=1
OLLAMA_SCHED_SPREAD=0
OLLAMA_FLASH_ATTENTION=1
OLLAMA_KV_CACHE_TYPE=q8_0
変数 説明 設定値 備考
OLLAMA_DOCKER_TAG ollama/ollama イメージのタグ latest 最新リリースを追従する。固定したい場合は 0.40.3 のようにバージョンを指定する
WEBUI_DOCKER_TAG ghcr.io/open-webui/open-webui イメージのタグ main 最新ビルドを追従する。固定したい場合は v0.12.0 のようにバージョンを指定する
OPEN_WEBUI_PORT Open WebUI にアクセスするホスト側ポート 3000 コンテナ内の 8080 番にマッピングされる。ブラウザで http://<host>:3000 を開く
OLLAMA_MAX_LOADED_MODELS 同時にメモリへ常駐させるモデルの最大数 1 別のモデルを呼ぶと前のモデルがアンロードされる。メモリに余裕があれば増やすとモデル切り替えが速くなる
OLLAMA_NUM_PARALLEL 1 つのモデルが同時に処理するリクエスト数 1 増やすとコンテキスト用メモリがその倍数で必要になる。単一ユーザー利用なら 1 で十分
OLLAMA_SCHED_SPREAD モデルを全 GPU に分散配置するか 0 0: 最小限の GPU に収める、1: 全 GPU に分散。GPU が 1 基の環境では効果なし
OLLAMA_FLASH_ATTENTION Flash Attention を有効にするか 1 1: 有効、0: 無効。KV キャッシュのメモリ使用量を削減し、長いコンテキストで有利。OLLAMA_KV_CACHE_TYPE の量子化に必須
OLLAMA_KV_CACHE_TYPE KV キャッシュの量子化形式 q8_0 f16: 非量子化(既定)、q8_0: 約半分のメモリでほぼ品質劣化なし、q4_0: 約 1/4 のメモリだが品質劣化あり。OLLAMA_FLASH_ATTENTION=1 が必要

環境変数の編集が完了したら、以下のコマンドでコンテナを起動する。

docker compose up -d

Dockerイメージのダウンロードが始まり、正常にコンテナが起動すれば完了。

動作確認

CLI

OllamaのCLIでの基本的な使い方については、以下の私の過去の記事を参照。

Ollamaコンテナの起動後に以下のコマンドでコンテナ内のBashにアクセスする。

docker exec -it ollama bash

使いたいモデルをダウンロードする。ここでは、gemma4:31bとする。

ollama pull gemma4:31b

以下のようになれば成功。

pulling manifest 
pulling 6357a8a2d521: 100% ▕█████████████████████████████████████████████████████████████ ▏ 1.2 GB/1.2 GB   75 MB/s      0s
pulling cd20f2b3f2e3: 100% ▕█████████████████████████████████████████████████████████████ ▏  18 GB/ 18 GB   98 MB/s      0s
pulling 9ec411cf75f3: 100% ▕█████████████████████████████████████████████████████████████ ▏ 514 MB/514 MB   64 MB/s      0s
pulling b507b9c2f6ca: 100% ▕██████████████████████████████████████████████████████████████▏   13 B                         
pulling 7339fa418c9a: 100% ▕██████████████████████████████████████████████████████████████▏  11 KB                         
pulling 2365fbb6d97b: 100% ▕██████████████████████████████████████████████████████████████▏   64 B                         
pulling 094d707563aa: 100% ▕██████████████████████████████████████████████████████████████▏  242 B                         
verifying sha256 digest 
writing manifest 
removing unused layers 
success 

以下のコマンドで起動確認する。

Gemma4 31Bの場合
ollama run gemma4:31b

適当にLLMとチャットしてみる。

>>> こんにちは
Thinking...
*   Input: "こんにちは" (Konnichiwa)
    *   Language: Japanese
    *   Meaning: "Hello" / "Good day"

    *   The user is greeting me.
    *   The appropriate response is a polite greeting back, and an offer to help.

    *   *Simple:* こんにちは! (Hello!)
    *   *Helpful:* こんにちは!何かお手伝いできることはありますか? (Hello! Is there anything I can help you with?)
    *   *Polite:* こんにちは。どのようにお役に立てますか? (Hello. How can I be of service?)

    *   A friendly, welcoming, and open-ended response is best.

    *   "こんにちは!何かお手伝いできることはありますか?" (Hello! Is there anything I can help you with?)
...done thinking.

こんにちは!何かお手伝いできることはありますか?

>>> Send a message (/? for help)

GUI(Open WebUI)

JetsonのIPアドレスと、.envファイルで指定したポート番号を使い、Open WebUIにアクセスする(http://<JetsonのIPアドレス>:<ポート番号>)。

「はじめる」ボタンを押して、管理者のユーザー設定を行う。

Ollamaのモデルは、CLIでダウンロードしたものが表示される。モデルが表示されない場合は、前述のモデルのダウンロードをする。

以下は、Gemma4 31Bが表示されている。

image.png

適当にLLMとチャットしてみる。

image.png

まとめ

NVIDIA Jetson AGX Thor開発者キットで、Docker Composeを使ってOllamaとOpen WebUIを起動し、Gemma 4 31Bとのチャットを確認した。

今回検証した構成では、以前のJetson AGX Orin開発者キットでの構築手順と比べて、環境構築を簡略化できた。CLIに加え、Open WebUIを利用することで、ブラウザーからもモデルを選択してチャットできることを確認した。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?