モチベーション
2023年を振り返ってみると、多くの日本語LLM(Large Language Models)がリリースされた一年だった。自分もいくつかの日本語LLMを自宅の環境で動作させてみたので、ここにまとめる。
情報源
自分が日本語LLMを試す際にコードを参考にしたページを以下に示す。最後の数字はパラメータ数を表している、7bは70億パラメータ、13bは130億パラメータである。
- Calm2 7b サーバーエージェントの日本語LLM
- ELYZA-japanese-Llama-2-7b ELYZAがLlama-2-7b-chat-hfをベースに開発した日本語LLM。
- ELYZA-japanese-Llama-2-13b Llama2をベースにELYZAが開発した日本語LLM。
- Japanese StableLM Instruct Alpha 7B v2 Stability AIの日本語LLM
- Japanese Stable LM Beta 7B Stability AIの日本語LLM
- Youri-7B RinnaがLlama2をベースに開発した日本語LLM
動作環境
サーバー環境
サーバー名 | Jupiter | Ganymede |
---|---|---|
CPU | Xeon E5-1620 3.60GHz | Xeopn E5-2620 2.00GHz |
memory | 64GB | 64GB |
GPU | NVIDIA TITAN V | RTX A4000 |
OS | Ubuntu 22.04.3 LTS | Ubuntu 22.04.3 LTS |
JupyterLab
それぞれの日本語LLMは、次のDockerfileで作製したJupyterLab上で動作させた。
# JupyterLabが使えるDockerイメージ
# 自分がこれまで作成したNoteBookに必要なパッケージをインストールしたもの。
FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04
# Set bash as the default shell
ENV SHELL=/bin/bash
# Build with some basic utilities
RUN apt-get update && apt-get install -y \
python3-pip apt-utils vim \
git git-lfs \
curl unzip wget
# alias python='python3'
RUN ln -s /usr/bin/python3 /usr/bin/python
RUN pip install --upgrade pip setuptools \
&& pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 \
--index-url https://download.pytorch.org/whl/cu118 \
&& pip install jupyterlab matplotlib pandas scikit-learn ipywidgets \
&& pip install transformers accelerate sentencepiece einops \
&& pip install langchain bitsandbytes auto-gptq protobuf
# Create a working directory
WORKDIR /workdir
# Port number in container side
EXPOSE 8888
ENTRYPOINT ["jupyter-lab", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root", "--NotebookApp.token=''"]
CMD ["--notebook-dir=/workdir"]
コード
dockerコンテナとして起動したJupyterLabのセルに、情報源で示したページのコードをコピペして実行した。
実行結果
Jupiter | Ganymede | |
---|---|---|
Calm2 7b | ○ | ○ |
ELYZA-japanese-Llama-2-7b | × | ○ |
ELYZA-japanese-Llama-2-13b | − | △ |
Japanese StableLM Instruct Alpha 7B v2 | × | ○ |
Japanese Stable LM Beta 7B | △ | ○ |
Youri-7B | ○ | ○ |
凡例「○/△/×/-」の意味は次のとおり。
○:質問の回答を返す。(一部出力が切れているケースもあり)
△:次のメッセージを表示し、CPU側にオフロードして実行。 WARNING:root:Some parameters are on the meta device device because they were offloaded to the cpu.
×:CUDA out of memory
-:実行していない。
今後について
130億パラメータが、16GBのRTX A4000で、オフロードするも動作したのは、少し驚きである。 12GBのTITAN Xでは、LLMは少し荷が重い。量子化を調べる方向もあるが、DeepSpeedで使ってモデル並列化について調べていきたい。
DeepSpeedは2024年の課題として取り組むことにする。