DockerコンテナでOpen-Interpreterを動かせるようになったけどどうやらCPUだけで処理してるみたいだったので、GPUを使って動かせるようにするために四苦八苦したことをメモしておこうと思う。
前提
- Dockerでコンテナを作ってその中でOpen-Interpreterを動かす。
- Docker Desktopを動かしているマシンは、OSがWindows11、グラボは載せてある。
やりたいこと
- コンテナにGPUを認識させる
- Open-Interpreterの実行時にCPUじゃなくてGPUを使わせる。
やったこと
コンテナにGPUを認識させる
少し前?にコンテナにGPUを共有するオプションができたらしく、コンテナにGPUを認識させること自体は簡単だった。
コンテナを作るときに--gpus
というオプションをつけるだけで良いらしい。 gpusの後ろはどれくらいリソースをコンテナに渡すかのパラメータらしい。とりあえずallとつけておけばPCについているGPUを全部コンテナと共有できる。
docker run --gpus all -it イメージ名 bash
コンテナにCUDAをインストールする
正直やり方がはっきりせず結構大変だった。
公式のインストール方法を試すのが1番正解な気がしたけど、コンテナのOSにではwgetがインストールされていないし、インストールしようとしてもエラーが出てインストールできなかった…
CUDA Toolkit 12.2 Update 2 Downloads | NVIDIA Developer
最終的にNvidiaが公式に用意しているcudaがインストール済みのコンテナイメージを使って、すでにCUDAがインストールされているコンテナを使うことにした。
たぶんこれが1番早い。
https://hub.docker.com/r/nvidia/cuda
公式のドキュメントをみながらllama-cpp-pythonをインストールする
open-interpretrのgithubをみてみるとGPU.mdっていういかにもGPU使って動かしたい人向けのreadme的なものがあったので見てみた。
内容はwindows環境でGPUを使ってopen-interpreterを動かす手順についてで、結論としては
python -c "from llama_cpp import GGML_USE_CUBLAS; print(GGML_USE_CUBLAS)"
を実行したときにTrueが返ってくるように、色々設定しながらでllama-cpp-pythonをインストールすれば良いっぽい。
https://github.com/KillianLucas/open-interpreter/blob/main/docs/GPU.md
python -c "from llama_cpp import GGML_USE_CUBLAS; print(GGML_USE_CUBLAS)"
がTrueになるかどうかでOpen-interpreterがGPUを使ってくれるかどうかが決まるみたい。
ドキュメントで紹介されている手順の流れとしては以下の通り。
- CUDAをインストールする
- 環境変数を設定しつつllama-cpp-pythonをインストールする
python -c "from llama_cpp import GGML_USE_CUBLAS; print(GGML_USE_CUBLAS)"
でインストールが上手くできているかを確認
その他
コンテナはNvidiaが用意したCUDAインストール済みのイメージを使ったので、Pythonがちょっと古かった。 そこでここをみながらPythonのバージョンアップをした。
それでもpip install open-interpreter
を実行するとERROR: Could not find a version that satisfies the requirement open-interpreter (from versions: none)
とエラーが出てうまくインストールできなかった。
色々調べてると下のサイトに辿り着いてその中で書かれているpip install open-interpreter --ignore-requires-python
を実行するとインストールができた。
おまけ
とりあえずopen-interpretrがGPUを使ってくれるようにはなった。でもクエリを投げてもエラーで落ちててうまく動いてない。
エラーの内容的に古い方のPythonを使っているっぽいのでaliasの設定がうまくできてないのかなあ…
追記
現時点で最新のopen-interpreterだと起きるバグっぽい…
参考
コンテナ内で GPU を使う (Windows 環境) – すらりん日記
Dockerで計算用途で使うときのオプションのまとめ - Qiita
Windows 11のWSLとDocker DesktopとGPUを使用したDeepLearning環境の構築方法(超便利になった!!) - Qiita
open-interpreter/docs/GPU.md at main · KillianLucas/open-interpreter · GitHub