At first
ローカルLLM(Large Language Models)を管理・実行するためのツール「ollama」と
LLMを利用したWebアプリケーションをGUIで容易に構築できるサービス「Dify」に触れる。
具体的には、ollamaを使ってローカルでLLMを操作し、Difyを使ってそれをWebアプリケーションに統合する方法を示す。
Ollama
Web
GitHub
About
git はソースコード、docker は仮想環境を管理・実行する際に便利なツールだが、
ollama は上記と似ていて、ローカルLLMを管理・実行する際に便利なツールである。
pull
で llm をローカルに落とし、run
で llm を実行できる。
また、ローカルLLM 使用するための Web API としての機能をもち、Difyからも使用することができる。
裏では llama.cpp が動いているようで高速な動作が期待できる。
llama.cpp: https://github.com/ggerganov/llama.cpp
How to use
以下の docker image を利用するだけ。
ワークディレクトリを作成し、以下の docker-compose.yaml を作成する。
その後、docker-compose up -d
を実行する。
version: "3.8"
services:
ollama:
image: ollama/ollama
container_name: ollama
ports:
- "11434:11434"
volumes:
- ./volumes/ollama:/root/.ollama
# GPU ON
deploy:
resources:
reservations:
devices:
- driver: nvidia
capabilities: [gpu]
restart: always
コンテナが立ち上がった後は以下のコマンドでローカルLLMを pull
, run
する。
# enter container
docker exec -it ollama
# pull
ollama pull llama3
# run
ollama run llama3
以下のように Web API としても使用できる。
curl http://localhost:11434/api/chat -d '{
"model": "llama3",
"messages": [
{ "role": "user", "content": "why is the sky blue?" }
]
}'
(GGUFモデルから)自作のモデルを作りたい場合は以下コマンドを実行する。
# enter container
docker exec -it ollama
# create model
ollama create <user name>/<model name> -f Modelfile
# check model
ollama show <user name>/<model name> --modelfile
# push model
# key setting is required
# https://github.com/ollama/ollama/blob/main/docs/import.md#publishing-your-model-optional--early-alpha
ollama push <user name>/<model name>
モデルが pytorch や safetensors の場合は以下フロー(長い)を参照して ollamaモデル を作成する。
https://github.com/ollama/ollama/blob/main/docs/import.md#importing-pytorch--safetensors
Dify
Web
GitHub
About
GUI(Webアプリケーション)でLLMアプリケーションを作成できるサービスである。
単純にLLMを利用したチャットアプリを作成できるだけでなく、フローを用いたRAGの作成も可能である。
How to use
以下の github を pull
した後に、docker のディレクトリに行き、
docker-compose up -d
を実行してWebアプリケーションを起動する。
Ref
- Ollam x Dify で Local LLM App を構築する具体的なフローについて記載されいる。
- Ollama で自作モデルを作成する方法が記載されている。
- にゃんたのYoutube(その1)
- にゃんたのYoutube(その2)