Closed19
AITuberをDockerに載せる
APIにしたLLMをDockerに載せてCloud移行に備える
ARG python_image_v="python:3.9-buster"
# python3.9のイメージをダウンロード
FROM ${python_image_v}
ARG work_dir="/src/"
WORKDIR ${work_dir}
ENV POETRY_HOME=/opt/poetry
# poetryインストール
RUN curl -sSL https://install.python-poetry.org | python - || { cat /poetry*.log; exit 1; } && \
# poetryコマンドの追加
cd /usr/local/bin && \
ln -s /opt/poetry/bin/poetry && \
# コンテナ前提のため,仮想環境を作らない
poetry config virtualenvs.create false
ちなみに罠があって、install.python-poetry.orgを使う必要があります
poetryのurlを変える
https://download.pytorch.org/whl/cu117/torch-1.13.1%2Bcu117-cp39-cp39-linux_x86_64.whl
変更前
torch = {url = "https://download.pytorch.org/whl/cu117/torch-1.13.1%2Bcu117-cp39-cp39-win_amd64.whl"}
変更後
torch = {url = "https://download.pytorch.org/whl/cu117/torch-1.13.1%2Bcu117-cp39-cp39-linux_x86_64.whl"}
これに従う
pytorchを使えるようにすればよいとおもったので変えた
ARG python_image_v="nvcr.io/nvidia/pytorch:22.12-py3"
# python3.9のイメージをダウンロード
FROM ${python_image_v}
RUN apt update && apt -y upgrade
ARG work_dir="/src/"
RUN apt-get update && apt-get install -y
# コンテナにアクセスした際のデフォルトディレクトリ
WORKDIR ${work_dir}
# poetryのインストール先の指定
ENV POETRY_HOME=/opt/poetry
# poetryインストール
RUN curl -sSL https://install.python-poetry.org | python - || { cat /poetry*.log; exit 1; } && \
# シンボリックによるpathへのpoetryコマンドの追加
cd /usr/local/bin && \
ln -s /opt/poetry/bin/poetry && \
# 仮想環境を作成しない設定(コンテナ前提のため,仮想環境を作らない)
poetry config virtualenvs.create false
pipもpoetryも使えるようになったし、pipで無理やりtorch+cu117入れたりしてたけどdocker内でCUDAはまだ使えてない
ちなみに上だけだと駄目で、下記をdockerDesktopに入れてあげないとpullできない
"insecure-registries":[
"nvcr.io"
],
genie入れてる
WSLだとsystemctlが使えないので
明日はこれ見てもう一度やる
docker-composeにgpus設定してなかったのが問題だったので入れたらできた
これをpoetryで使えるようにしたい
色々やったが、docker内でpoetryを使うメリットがそこまでないためrequires.txtでの管理にしようかと考えている
とりあえずこれで動いた。
ARG python_image_v="nvidia/cuda:11.7.0-base-ubuntu22.04"
# python3.9のイメージをダウンロード
FROM ${python_image_v}
ENV TZ=Asia/Tokyo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt update && \
apt install -y software-properties-common && \
add-apt-repository ppa:deadsnakes/ppa
RUN apt install -y \
python3.9 \
python3-pip \
sudo \
wget \
git \
vim \
curl \
python3.9-distutils
# python3.9をpythonコマンドとして使えるようにする
RUN mv /usr/bin/python3 /usr/bin/python3_old && \
mv /usr/bin/python3.9 /usr/bin/python3
RUN pip install transformers fastapi uvicorn sentencepiece &&\
pip install torch --extra-index-url https://download.pytorch.org/whl/cu117
ARG work_dir="/src/"
# コンテナにアクセスした際のデフォルトディレクトリ
WORKDIR ${work_dir}
wsl2を用いたので自分はこれも使った
最終的にはこうなった
ARG python_image_v="nvidia/cuda:11.7.0-base-ubuntu22.04"
# python3.9のイメージをダウンロード
FROM ${python_image_v}
ENV TZ=Asia/Tokyo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt update && \
apt install -y software-properties-common && \
add-apt-repository ppa:deadsnakes/ppa
RUN apt install -y \
python3.9 \
python3-pip \
sudo \
wget \
git \
vim \
curl \
python3.9-distutils
# python3.9をpythonコマンドとして使えるようにする
RUN mv /usr/bin/python3 /usr/bin/python3_old && \
mv /usr/bin/python3.9 /usr/bin/python3
RUN pip install transformers fastapi uvicorn sentencepiece &&\
pip install torch --extra-index-url https://download.pytorch.org/whl/cu117
EXPOSE 8000
ARG work_dir="/src/"
# コンテナにアクセスした際のデフォルトディレクトリ
WORKDIR ${work_dir}
CMD ["uvicorn", "main:app", "--reload", "--host", "0.0.0.0", "--port", "8000"]
docker-compose
version: '3'
services:
local-llm:
build: .
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
volumes:
- .:/src
ports:
- 8000:8000
tty: true # retain container up
このスクラップは2023/02/23にクローズされました