OpenMythosをGPUを利用できるLinuxMint/Docker環境で構築しました ( 1050Ti / 1660 super / Pytorchへ移行 )
1.概要
前回までは、LinuxMint 22.3のオンプレミスでGPUを利用してOpenMythosを動かしました。しかし、OS更新で構築環境の整合性が取れずに動作しなくなる場合があり、Docker環境で動かすことにチャレンジしました。その内容を記述します。
2.詳細
LinuxMint 22.3が導入され、nvidiaのGPUがHWとして認識されている状態を想定します。
利用した機器は、amd 3200G, nvidia-1660 superです。
Docker環境を利用することでContainer内部に必要なPython3環境を準備できてpython3-venvも不要となり、操作も楽になります。利用したubuntu-24.04ベースのContainerはUser:Ubuntuが存在し、ContainerとLocal間のデータを楽にできるようにLocal上のUserとuid:gidが同じにしています。
オンプレ構築部分は参考資料(OpenMythosをLinuxMint 22.3に環境構築してみました)を参照願います。
(1) nouveauの無効化
/etc/modprobe.d/blacklist-nouveau.conf作成
# nvidia(nouveau)
blacklist nouveau
options nouveau modeset=0
適用します
$ sudo update-initramfs -u
(2) nvidia driver設定
$ ubuntu-drivers devices
$ sudo apt -y install nvidia-driver-595-open
(3) nvidia Container Toolkit導入
参考資料(Installing the NVIDIA Container Toolkit)を参照願います
$ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
$ sudo apt-get update
$ export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.19.1-1
sudo apt-get install -y \
nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}
(4) 再起動して確認します
$ nvidia-smi
$ nvidia-container-cli info
(5) dockerとdocker compose導入
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu noble stable"
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
$ sudo gpasswd -a $USER docker
$ docker --version
$ docker compose version
(6) Dockerfile作成
FROM nvidia/cuda:12.6.0-devel-ubuntu24.04
ENV PYTHONUNBUFFERED=1 \
DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
python3 \
python3-pip \
git \
&& rm -rf /var/lib/apt/lists/*
RUN pip3 install --no-cache-dir --break-system-packages \
torch \
torchvision \
torchaudio \
open-mythos \
swarms
WORKDIR /home/ubuntu
RUN chown ubuntu:ubuntu /home/ubuntu
USER ubuntu
CMD ["sleep", "infinity"]
(7) docker-compose.yml作成
services:
openmythos:
container_name: openmythos
build:
context: .
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
volumes:
- .:/home/ubuntu
tty: true
stdin_open: true
(8) 起動
$ docker compose up -d
(9) login
$ docker compose exec --user ubuntu openmythos bash
(10) Usage実行
参考資料(OpenMythosのサンプルプログラムを動かしました)を参照願います。
$ python3 openmythos_usage.py
3.所見
最近、OS関連のupdateが多いので、Docker環境がオンプレ環境よりも使い心地は良いと感じています。基盤のLinuxMint 22.3の更新にDocker Contariner環境が影響されない上、オンプレ環境とあまり違和感を感じません。
4.追加
(1)nvidia-1050TiではOpenMythosは動作しない
nvidia-1050Tiが利用できる環境があるので、Dockerを利用したOpenMythosの学習環境ができないか試しました。しかし、nvidia-1050Tiのハードウェア上の理由でCUDA-12.6がサポートされず、動作させることができません。ハードウェアに制約があり、最新のドライバーが提供されないこともわかりました。また、nvidia関連を除外したcpuでの動作環境で試験をすると、OpneMythosを導入できません。OpenMythosはnvidiaが必須でした。
動作しないことがわかるのは、cudaの確認をpython3で実行するときでした
$ python3
Python 3.12.3 (main, Mar 23 2026, 19:04:32) [GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.cuda.is_available()
/usr/local/lib/python3.12/dist-packages/torch/cuda/__init__.py:187: UserWarning: CUDA initialization: The NVIDIA driver on your system is too old (found version 12060). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver. (Triggered internally at /pytorch/c10/cuda/CUDAFunctions.cpp:119.)
return torch._C._cuda_getDeviceCount() > 0
False
(2)OpenMythosからPytorchと熟考ループへ移行して、OpenMythosを削除しました
OpenMythosの環境構築や実行試験をしていたのですが、処理ロジックを呼び出すだけでは中身がわかりません。AIでは大規模なテンソルを利用するのでデータの追跡がとても難しく、ロジックが明確なことが大切だと思います。難しい部分はGoogleAI(Gemini)に手助けを依頼して、少し処理を追跡をしてみました。
OpenMythosで利用されている熟考ループの汎用的なサンプルコードを参照して、Pytorchのforward処理部分にbackwardを伴わない数回のループを追加して代替できると知りました。これを知って、OpenMythosはPytorchで実現でき、Pytorchのみに移行しました。これでnvidia-1050Tiでも実行可能になりました。サンプルにした例題は下記内容です。
かれのなまえはたろうです。かれのいぬはぽちです。
私には初めての文書でしたが、LLM分野の方はご存知の文書だと思います。
LLMは、この文書を学習して、「かれのなまえは」と問い合わせると、「たろうです」と答えるロジックを作ります。
環境構築面ではDockerfileを修正します。
<修正前>
RUN pip3 install --no-cache-dir --break-system-packages \
torch \
torchvision \
torchaudio \
open-mythos \
swarms
<修正後>
RUN pip3 install --no-cache-dir --break-system-packages \
torch \
torchvision \
torchaudio \
swarms
(3) nvidia 1050Tiはnvidia-driver-580でcuda 13.0サポート。OpenMythos動作します
nvida-driver-535がrecommenedeですが、nvidia-driver-580へupdateできます。
これにより、cuda 13.0がサポート対象となり、cuda 12.6.0を設定して、
nvidia 1660 superと同じようにOpenMythosを利用できました。
docker設定方法はnvidia 1660 superと同一です。
(4) Usageの修正
Usageに記載されているPythonプログラムをopenmythos_usage.pyとして作成して実行するとエラーとなるので、コードの以下のように修正します。
#rho = torch.linalg.eigvals(A).abs().max().item()
rho = A.abs().max().item()
$ source ~/mypy/bin/activate
(mypy) $ python3 openmythos_usage.py
[MLA] Parameters: 1,538,626
[MLA] Logits shape: torch.Size([2, 16, 1000])
[MLA] Generated shape: torch.Size([2, 24])
[MLA] Spectral radius ρ(A) = 0.3679 (must be < 1)
動作しました。
参考
[本ブログ内参照]
・3目並べを利用したAlphaGo学習の整理 ( ランダム編 等 )
・LinuxMintで囲碁AIのlizzieとleela_zeroの組合せをGPUを利用して動作確認しました
・話題のOpenClawを試してみました
・LinuxMintで囲碁AIのlizzieとleela_zeroの組合せをGPUを利用して動作確認しました
・話題のOpenClawを試してみました
[外部サイト参照]
コメント
コメントを投稿