FluxとLLMが動かせるDockerfile
環境再構築時のエラーとその解決方法について
以前アップしたこちらの記事の環境を再構築し、画像生成を試みたところ、量子化の箇所でエラーが発生し、画像生成ができなくなっていました。
アップした内容に問題があるのかと思い、再度ひとつずつモジュールをpipでインストールしたり、試行錯誤を重ねて原因を探りました。半日かかりました。
結局、optimum-quantoのバージョンが10月1日に更新されており、pip install optimum-quanto を実行すると最新のバージョンがインストールされ、その最新のバージョンに問題があることが分かりました。
DockerとDevContainerを使用し、コンテナ作成後のpipをアップしておけば再現可能だと思っていましたが、そうではありませんでした。
また動かせなくなるのが不安だったため、コンテナ作成後のpipのバージョンをDockerfileに明記しました。
これで、皆さんもFluxや言語モデルTanuki、llm-jpの軽量モデルを動かせると思います。
Tanuki-8x8BはVRAMの容量が大きくても、この環境では動作しません。独自に独自改変したvLLMが必要になるようです。
Dockerfile
FROM nvcr.io/nvidia/pytorch:24.07-py3
# 基本ツールのインストール
RUN apt-get update && apt-get install -y \
wget \
pulseaudio \
alsa-utils
# Pythonパッケージのインストール
RUN pip install --upgrade pip
RUN pip install --no-cache-dir \
openai==1.44.1 \
langchain==0.2.16 \
playwright==1.46.0 \
lxml==5.3.0 \
asyncio==3.4.3 \
nest_asyncio==1.6.0 \
beautifulsoup4==4.12.3 \
vllm==0.6.2
# 一部パッケージのアンインストールと再インストール
RUN pip uninstall -y datasets pyarrow
RUN pip install --no-cache-dir \
datasets==2.19.2 \
pyarrow==14.0.2
# その他Pythonパッケージのインストール
RUN pip install --no-cache-dir \
transformers==4.45.2 \
sentencepiece==0.2.0 \
accelerate==1.0.0 \
diffusers==0.30.3 \
optimum-quanto==0.2.4
# flash_attnとapexのアンインストールと再インストール
RUN pip uninstall -y flash_attn apex
RUN pip install --no-cache-dir \
flash_attn==2.6.3 \
apex==0.9.10.dev0
# pynvmlのアンインストールとnvidia-ml-pyのインストール
RUN pip uninstall -y pynvml
RUN pip install --no-cache-dir \
nvidia-ml-py==12.560.30
# Playwright関連の依存関係とインストール
RUN playwright install-deps
RUN playwright install
# タイムゾーンの設定と作業ディレクトリの指定
ENV TZ='Asia/Tokyo'
WORKDIR /workspaces
devcontainer.json
{
"name": "pytorch",
"dockerFile": "Dockerfile",
"runArgs": [
"--gpus",
"all",
"--shm-size",
"64gb",
"-e",
"PULSE_SERVER=unix:/mnt/wslg/PulseServer",
"-v",
"/mnt/wslg/:/mnt/wslg/"
],
"settings": {
"terminal.integrated.shell.linux": "/bin/bash"
},
"extensions": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
],
"workspaceMount": "source=${localWorkspaceFolder},target=/hostdir,type=bind,consistency=cached",
"workspaceFolder": "/workspaces",
"containerEnv": {
"MOUNTED_HOST_DIR": "${localWorkspaceFolder}",
"MOUNTED_HOST_DIR_PATH_IN_CONTAINER": "/hostdir"
},
"forwardPorts": [80],
"features": {
"docker-in-docker": {
"version": "latest"
}
},
"remoteUser": "root",
"containerUser": "root"
}
プログラミングに苦手意識をお持ちの方は、ぜひ「DXパーティー」までお問い合わせください。
有料サービスではありますが、オンラインでマンツーマンのレッスンを受けることで、短期間でPythonを習得し、自在に使いこなせるようになると思います!
マンツーマンオンライン講師を募集しています。 特に視聴者数が少ないDX・デジタル領域に取り組んでいるYouTube配信者を積極的に募集しています。 DXパティーのレッスンとYouTubeチャンネルの収益化の両方から収益を得て、安定した収入を目指しましょう。