見出し画像

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パティー (dxpt.jp)

マンツーマンオンライン講師を募集しています。 特に視聴者数が少ないDX・デジタル領域に取り組んでいるYouTube配信者を積極的に募集しています。 DXパティーのレッスンとYouTubeチャンネルの収益化の両方から収益を得て、安定した収入を目指しましょう。

DXパティーでは講師募集中!

お仕事のご依頼もお待ちしております!