difyをすべてローカルで動かす手順の話2
difyとは
なんかAIアプリがRAGでフロー形式でなんやからのツールっぽいです。
(まだいろいろ触っている最中)
difyで検索しても、抽象的に「どんなことに使える」っぽい記事が多くて操作感に慣れるのにいっぱいいっぱいです。
自分のように頭の良くない人間には理解するのが大変なんです。
AI関連のこと。
「2」のわけ
タイトルに「2」とついているように、前回もdifyをローカルで動かす関連を書きました。
その後いろいろ調べていくうちに、分かったことがあります。
- docker composeファイルは自動引き継ぎ設定上書きファイルが作れる
- ローカルLLMツールollamaは複数のモデルが読み込める
- ollamaは複数GPUをサポートしている
- ollamaで読み込める日本語モデルがある
…知ってる方からしたら当然の話だったりするわけですが。
docker composeファイルの上書き
ファイル名と拡張子の間に .override
と入ったファイルを作って記述をすると、設定の上書きができるようです。
前回は知らなかったので、元ファイルの差分を記載したわけですが…。
ollamaは複数のモデルが読み込める
環境変数 OLLAMA_MAX_LOADED_MODELS
という設定を行うと、複数のモデルが読み込めるようです。
読み込める個数を設定します。
ollamaは複数GPUをサポートしている
環境変数 OLLAMA_CUDA_VISIBLE_DEVICES
の設定を行うと、複数のGPUが使えるようです。
nvidia-smi
で表示されるIDをコンマで区切って複数記述したものを設定します。
ollamaで読み込める日本語モデル
以下のモデルが日本語で読み込めるようです。
設定のしかた
docker composeファイル
実際のファイル内容は以下になります。
dify/dockerディレクトリに下記の内容・ファイル名でファイルを作成します。
services:
api:
depends_on:
- ollama
worker:
depends_on:
- ollama
ollama:
image: ollama/ollama
container_name: ollama
restart: always
environment:
CUDA_VISIBLE_DEVICES: ${OLLAMA_CUDA_VISIBLE_DEVICES:-0}
OLLAMA_MAX_LOADED_MODELS: ${OLLAMA_MAX_LOADED_MODELS:-1}
OLLAMA_NUM_PARALLEL: ${OLLAMA_NUM_PARALLEL:-1}
OLLAMA_KEEP_ALIVE: ${OLLAMA_KEEP_ALIVE:-5m}
ports:
- ${OLLAMA_PORT:-11434}:11434
volumes:
- ./volumes/ollama:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
capabilities: [gpu]
device_ids: [all]
networks:
- ssrf_proxy_network
- default
環境変数
環境変数は、同ディレクトリ内にある .env.sample
ファイルを複製して、 .env
というファイルを作ります。
そして、下記をファイルの末尾に追記します。
OLLAMA_CUDA_VISIBLE_DEVICES=0,1
OLLAMA_MAX_LOADED_MODELS=4
OLLAMA_NUM_PARALLEL=2
OLLAMA_KEEP_ALIVE=-1
以上です
ちょっと設定が前回よりスマートになりましたか。
あー、 yaml内の device_ids
を OLLAMA_CUDA_VISIBLE_DEVICES
にしたらもっとスマートになりますかねー…。
Discussion