スマートフォン・タブレットからインターネットサーバーオペレーション

APPW.jp
 
ConoHa VPS移設記/2GB・3コア → 4GB・4コア/Ubuntu 26.04 LTS

⑪ llama.cpp、ChromaDB

RAGシステムの環境自体は事前にscpでコピー済みだったため、今回の主眼は「本当にそれで十分か」の確認作業になった。 CPU向け再ビルド、バージョン整合、環境変数の移行漏れという3点を潰した回。

作業端末: iPad mini(Termius)

MIGRATION ROADMAP — 全17工程
  1. ① SSH、ユーザー追加
  2. ② IPv4/IPv6追加、netplan、ufw
  3. ③ Apache2
  4. ④ Let's Encrypt
  5. ⑤ PHP
  6. ⑥ MariaDB
  7. ⑦ WordPress
  8. ⑧ Dovecot、Postfix
  9. ⑨ Vsftpd
  10. ⑩ Python
  11. ⑪ llama.cpp、ChromaDB
  12. ⑫ Anaconda、Keras、TensorFlow
  13. ⑬ Node.js
  14. ⑭ MongoDB
  15. ⑮ Mosquitto
  16. ⑯ RabbitMQ
  17. ⑰ Supervisor

01llama.cppは実質⑩で導入済みだった

RAGシステムのWebSocketサーバーはPython内でllama-cpp-pythonバインディング経由でGGUFモデルを読み込む構成のため、 ⑩でenv3.14に入れたllama_cpp_python==0.3.34がそのまま該当し、スタンドアロンバイナリの別途インストールは不要だった。

ただし、そのままのpipインストールはCPUの命令セット(AVX2等)を活かさない汎用ビルドになっていることがあるため、新サーバーのCPU向けに再ビルドした。

login-user@新サーバー
$ source /home/login-user/env3.14/bin/activate $ pip uninstall llama-cpp-python $ CMAKE_ARGS="-DGGML_NATIVE=ON" pip install llama-cpp-python --no-cache-dir

GGML_NATIVE=ONはビルドを実行しているマシン自身のCPU命令セットを自動検出して最適化する指定。旧サーバーとCPU世代が異なる可能性もあるため、コピーではなく新サーバー上で再ビルドする形にした。

02ChromaDB:バージョンが一致していれば実体コピーのみで足りる

PersistentClient(ローカルディレクトリへの永続化)構成なので、データ移行は基本的にディレクトリのコピーで完結する。 ただしChromaDBは過去に内部の保存形式が非互換な形で変わったことがあるため、旧サーバーと新サーバーのバージョンを確認した。

新旧サーバーで確認
$ pip show chromadb Version: 1.5.7

新旧とも1.5.7で一致していたため、スキーマ非互換の懸念なく実体コピーのみで完結。念のため、コレクション名・件数を照合した。

login-user@新サーバー
$ python3 -c "import chromadb; client = chromadb.PersistentClient(path='コピー先のパス'); [print(c.name, c.count()) for c in client.list_collections()]" web_articles 2110 documents 3
確認完了 旧サーバーで把握していたコレクション名・件数と一致。データ移行はこれで完了とみなせる。

03HuggingFaceトークンの移行漏れ

HF_TOKENは環境変数として設定されており、ホームディレクトリのファイルコピーには含まれていなかった(~/.cache/huggingface/tokenのようなファイル形式ではなかった)。新サーバー側で改めて設定が必要だった。

login-user@新サーバー
$ echo 'export HF_TOKEN="(トークンの値)"' >> ~/.bashrc $ source ~/.bashrc
先の話 .bashrcは対話シェル起動時のみ読み込まれるため、⑰でSupervisorによりWebSocketサーバーをデーモン化する際は、systemdのUnit定義にEnvironment=HF_TOKEN=...として移し替える必要がある。今回は動作確認のための暫定対応。

04ここまでの状態

  • llama-cpp-pythonを新サーバーのCPU向けに再ビルド(GGML_NATIVE=ON)
  • ChromaDBはバージョン一致を確認の上、データ実体コピーのみで移行完了(コレクション名・件数照合済み)
  • HF_TOKENを新サーバー側で再設定(.bashrc、⑰で systemd Environment= へ移行予定)
← 前回: ⑩ Python 次回: ⑫ Anaconda、Keras、TensorFlow →

『ConoHa VPS移設記 ⑪ llama.cpp、ChromaDB』を公開しました。