れとろのメモ置場

とあるSEのメモ置場

GPUを使ってOpen-Interpreterを動かすコンテナを作ろうとしたら苦労した話

DockerコンテナでOpen-Interpreterを動かせるようになったけどどうやらCPUだけで処理してるみたいだったので、GPUを使って動かせるようにするために四苦八苦したことをメモしておこうと思う。

前提

  • Dockerでコンテナを作ってその中でOpen-Interpreterを動かす。
  • Docker Desktopを動かしているマシンは、OSがWindows11、グラボは載せてある。

やりたいこと

  • コンテナにGPUを認識させる
  • Open-Interpreterの実行時にCPUじゃなくてGPUを使わせる。

やったこと

  1. コンテナにGPUを認識させる
  2. コンテナにCUDAをインストールする
  3. 公式のドキュメントをみながらllama-cpp-pythonをインストールする

コンテナに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-interpreterGPUを使ってくれるかどうかが決まるみたい。 ドキュメントで紹介されている手順の流れとしては以下の通り。

  1. CUDAをインストールする
  2. 環境変数を設定しつつllama-cpp-pythonをインストールする
  3. 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を実行するとインストールができた。

Could not find a version that satisfies the requirement open-interpreter · Issue #38 · KillianLucas/open-interpreter · GitHub

おまけ

とりあえずopen-interpretrがGPUを使ってくれるようにはなった。でもクエリを投げてもエラーで落ちててうまく動いてない。
エラーの内容的に古い方のPythonを使っているっぽいのでaliasの設定がうまくできてないのかなあ…

追記

現時点で最新のopen-interpreterだと起きるバグっぽい…

github.com

参考

コンテナ内で GPU を使う (Windows 環境) – すらりん日記

Dockerで計算用途で使うときのオプションのまとめ - Qiita

Windows 11のWSLとDocker DesktopとGPUを使用したDeepLearning環境の構築方法(超便利になった!!) - Qiita

open-interpreter/docs/GPU.md at main · KillianLucas/open-interpreter · GitHub

UbuntuにインストールされているPythonをアップデートする - 自動化無しに生活無し

Could not find a version that satisfies the requirement open-interpreter · Issue #38 · KillianLucas/open-interpreter · GitHub

ERROR: Could not find a version that satisfies the requirement open-interpreter (from versions: none) · Issue #170 · KillianLucas/open-interpreter · GitHub