よく忘れるので、ollamaで環境構築する手順をメモっておきます。
- インストール方法
- モデルファイルの保存場所変更
- 外部からの接続設定
- ollamaリポジトリからのダウンロード
- ggufファイルをインポートする方法
- 不要なモデルを削除
- ollamaコマンドでリモートのモデルを使う方法
ollama公式
ollamaインストール
下記ページのコマンドを実行する
ollamaダウンロード:https://ollama.com/download
rootでなくても良い。途中でsudoパスワードを聞いてくる。
[user] $ curl -fsSL https://ollama.com/install.sh | sh
- 参考) バージョンアップの時も同じコマンド。systemctl stop ollamaでサービスを止めて、上記コマンドでバージョンアップになるらしい。
モデルファイルの場所を指定する
ollamaのインストール先は、/usr/share/ollama
モデルファイルが格納されるディレクトリは、/usr/share/ollama/.ollama
モデルファイルは大容量(数ギガ〜十数ギガ)になるので、格納先ディレクトリを別の場所に指定する。この設定は環境変数OLLAMA_MODELSに設定する。環境変数の設定は、サービスユニットファイルに記述する。
外部から接続できるようにする
ollamaのlisetnアドレスは、デフォルトで127.0.0.1なので外部から接続できない。
これを環境変数OLLAMA_HOSTで設定する。また、アクセス制限も環境変数OLLAMA_ORIGINSで設定する。
unitファイルを編集
上記のモデルファイルの場所と外部接続の設定をサービスユニットファイルに追加する。
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user/.local/bin:/home/user/bin"
Environment="OLLAMA_MODELS=/disk/hdd5/ollama-models"
Environment="OLLAMA_HOST=0.0.0.0"
Environment="OLLAMA_ORIGINS=192.168.*,172.*"
[Install]
WantedBy=default.target
モデルファイルのディレクトリを作成して権限設定する
指定したディレクトリを作成して、権限を設定しておく。
オリジナルの権限は以下の通り。
[root] # ls -ld /usr/share/ollama/.ollama/models
drwxr-xr-x. 2 ollama ollama 6 7月 8 18:07 /usr/share/ollama/.ollama/models
これと同様の権限を設定する
[root] # mkdir -p /disk/hdd5/ollama-models
[root] # chmod 755 /disk/hdd5/ollama-models
[root] # chown ollama.ollama /disk/hdd5/ollama-models
[root] # ls -ld /disk/hdd5/ollama-models
drwxr-xr-x. 4 ollama ollama 36 7月 8 18:07 /disk/hdd5/ollama-models
注意)ユーザollamaでモデルにアクセスできることを確認する
[root] # su -s /bin/bash ollama
[ollama] $ ls -ld /disk/hdd5/ollama-models
drwxr-xr-x. 4 ollama ollama 36 7月 8 18:07 /disk/hdd5/ollama-models
[ollama] $ exit
exit
[root] #
ollamaサービスを起動する
ユニットファイルを変更した時はリロードしておく。変更がなければ不要。
[root] # systemctl daemon-reload
サービスを起動する。
[root] # systemctl start ollama
起動したか確認する。"active (running)"になっていること。
[root] # systemctl start ollama
● ollama.service - Ollama Service
Loaded: loaded (/etc/systemd/system/ollama.service; enabled; vendor preset: disabled)
Active: active (running) since 月 2024-07-08 18:13:14 JST; 16h ago
Main PID: 3954 (ollama)
CGroup: /system.slice/ollama.service
└─3954 /usr/local/bin/ollama serve
7月 08 18:13:48 server ollama[3954]: llama_new_context_with_model: graph nodes = 1030
7月 08 18:13:48 server ollama[3954]: llama_new_context_with_model: graph splits = 1
: (省略)
ollamaのポートを解放する
外部から接続できるように、ollamaのポートを解放する。
ollamaのポートはデフォルトで、11434/tcp
[root]# ss -anpt | grep ollama
LISTEN 0 128 127.0.0.1:11434 *:* users:(("ollama",pid=3954,fd=3))
[root]# firewall-cmd --add-port=11434/tcp
success
[root]# firewall-cmd --permanent --add-port=11434/tcp
success
モデルをダウンロードする
軽量なマイクロソフトPhi3の例で説明する。ollamaコマンドはrootでなくてもOK。
pullコマンドで、ollamaのリポジトリからダウンロード
[user] $ ollama pull phi3
pulling manifest
pulling 3e38718d00bb... 100% ▕███████████████▏ 2.2 GB
pulling fa8235e5b48f... 100% ▕███████████████▏ 1.1 KB
pulling 542b217f179c... 100% ▕███████████████▏ 148 B
pulling 8dde1baf1db0... 100% ▕███████████████▏ 78 B
pulling ed7ab7698fdd... 100% ▕███████████████▏ 483 B
verifying sha256 digest
writing manifest
removing any unused layers
success
モデルの一覧
lsコマンドで、モデル一覧が表示される。
[user]$ ollama ls
NAME ID SIZE MODIFIED
phi3:latest d184c916657e 2.2 GB 2 minutes ago
hawkclaws/datapilot-arrowpro-7b-kujira:latest 873301a15d62 7.7 GB 11 days ago
モデルを実行する
runコマンドで、モデルを実行する
[user]$ ollama run phi3
>>> こんにちは。今日も暑いですね。
Hello! Indeed, it's been quite hot today. I hope you have found some relief and perhaps a nice cool spot to relax in this
heatwave we seem to be experiencing. Staying hydrated is key during such times. How are you managing? Have you tried any
refreshing activities or staying indoors with air conditioning if possible?
>>> Send a message (/? for help)
- 回答が出力されている途中に、Ctl+C で中断できる。
- Ctl+D (linuxの場合) で、終了する。
モデルを削除する
rmコマンドで不要なモデルを削除できる。
[user]$ ollama ls
NAME ID SIZE MODIFIED
phi3:latest d184c916657e 2.2 GB 7 minutes ago
hawkclaws/datapilot-arrowpro-7b-kujira:latest 873301a15d62 7.7 GB 11 days ago
[user]$ ollama rm phi3
deleted 'phi3'
[user]$ ollama ls
NAME ID SIZE MODIFIED
hawkclaws/datapilot-arrowpro-7b-kujira:latest 873301a15d62 7.7 GB 11 days ago
ggufファイルをモデルに登録する
ollamaのリポジトリにないモデルをollamaで使う時は、
- ggufファイルをダウンロード
- Modelfileを作成
- ollamaに登録する
の手順になる。
ggufファイルを入手
これは適当にどうぞ
Modelfileを作成する
これはよくわからない。とりえず富嶽LLMでの例を参考に。
必須なのは、FROMパラメータ。ここにggufのパスを記述する。
モデルを登録する
createコマンドで、モデルを登録する。
[user]$ ollama create fugaku-llm -f Modelfile.txt
transferring model data
using existing layer sha256:b6999c1a64a531726fa1a6f10459f477c1016cc72212401fc9affbb29b1bc7fb
creating new layer sha256:a4e0782577a830dbeb8403285a149e70b5cdc22cbd149b733084be91a229abe2
creating new layer sha256:7062f767f7a9e848e484bc1df8c7b13fa08482ba42ffc3eba985d8f7a7e00eed
creating new layer sha256:015be5bf83215a3cfe0918304447348731d6421e9d1e840c5c25938a88ea9fb3
creating new layer sha256:e513a77c156e5870c681a34d831367325595410e4223085d847714c17b6afddc
writing manifest
success
[user]$ ollama ls
NAME ID SIZE MODIFIED
fugaku-llm:latest 4a5045cf5553 11 GB About a minute ago
hawkclaws/datapilot-arrowpro-7b-kujira:latest 873301a15d62 7.7 GB 11 days ago
ggufファイルを削除する
ollamaに登録したら、ggufは不要なので削除しても良い。もちろん残しておいてもいい。
[user] $ rm -f xxxxx.gguf
外部から接続する場合
他のマシンから、ollamaサーバに接続する時は、環境変数OLLAMA_HOSTを設定して、ollamaコマンドを実行する。
[user] $ export OLLAMA_HOST=192.168.1.23
[user] $ ollama run fugaku-llm
:
: