【LLM】llama2(ラマ2)/環境

2023/12/07に公開

ubunu22での環境を想定。

https://github.com/facebookresearch/llama
↑インストール手順はここが確実かな

モデルのダウンロード(2023/12月時点)

⭐️conda環境構築後に実施した方が楽です。
https://ai.meta.com/llama/

フォームで送信するとメールが送られてくる。

メールの中にはリンクが記載されている。
...
Model weights available:

Llama-2-7b
Llama-2-7b-chat
Llama-2-13b
Llama-2-13b-chat
Llama-2-70b
Llama-2-70b-chat
...
When asked for your unique custom URL, please insert the following:
https://download.ll....
...
git clone https://github.com/facebookresearch/llama.git
cd llama
./download.sh

⭐️上記のshファイルを実行するためには下記のライブラリが必要。

wget
md5sum

⭐️apt-get等でインストールしてしまいましょう。

/download.shを実行するとメールに記載されたURLの入力が求められる。
必要なモデルを選択できる。(サイズが重いので気をつけましょう。)

llama-2-13b       
llama-2-13b-chat  
llama-2-70b   
llama-2-70b-chat 
llama-2-7b
llama-2-7b-chat

上記のモデル(フォルダ)を取得できる。

ではフォルダの中身を確認してみよう。

checklist.chk        
consolidated.01.pth  
consolidated.03.pth  
consolidated.05.pth  
consolidated.07.pth
consolidated.00.pth 
consolidated.02.pth
consolidated.04.pth  
consolidated.06.pth  
params.json    

それぞれのフォルダに対して、chkファイル、複数のpthファイル、それからjsonファイルが入っていることがわかる。
⭐慣例によりPyTorchファイルは「.pt」「.pth」拡張子で保存される。

conda環境構築

推論をするにあたり、condaの利用が簡易的です。

ここに自分で作成したcondaが動くdockerファイルを記載しておきます。
(他に参考にしてたやつ動かなかったんですよね..)

FROM nvidia/cuda:12.3.0-devel-ubuntu22.04

RUN apt-get update && apt-get install -y \
    sudo \
    wget \
    vim \
    git \
    build-essential 

# minicondaを構築
RUN wget \
    https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \
    && bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/miniconda \
    && rm -f Miniconda3-latest-Linux-x86_64.sh 

ENV PATH="/opt/miniconda/bin:$PATH"
ARG PATH="/opt/miniconda/bin:$PATH"
RUN conda --version

RUN pip install --upgrade pip && \
    conda update -n base -c defaults conda 

RUN conda init bash

コンテナを起動後、コンテナに入り、condaの仮想環境を構築して、ログイン時に常に
activateするようにします。
(⭐️ここもdockerfileに記載できるとさらに利便性が高まりそうです。)

conda create -n llama python=3.10 -y

# 環境を変更
echo "conda activate llama" >> ~/.bashrc
. ~/.bashrc

環境内で(モデルをダウンロードするときのgitと同じ)cloneとその中にダウンロードしたファイルをおいておきましょう。(k8s上で構築するならPVないに作っておくとコンテナ終了しても無くならないのでGOODです。)

git clone https://github.com/facebookresearch/llama.git
cd llma

必要なライブラリも仮想環境上で(ローカルから)インスールしまいましょう。

pip install -e.

自分はダウンロードしたモデルをllamaフォルダ配下においているので下記のコマンド
を実行して、chatができることを確認できます。

torchrun --nproc_per_node 1 example_chat_completion.py \
    --ckpt_dir llama-2-7b-chat/ \
    --tokenizer_path tokenizer.model \
    --max_seq_len 512 --max_batch_size 6

動作させたときの自分の感想

llama-2-7bのイメージ→勝手に会話を作っていくイメージ
llama-2-7b-chatのイメージ→命令を元に回答するイメージ

Discussion