LoginSignup
6
8

Llama2を動かしてみる

Posted at

環境を用意する

GitHub レポジトリgit clone します。
必要なライブラリ等をインストールします。

モデルをダウンロードする

フォームから申請します。
数分でメールが送られてくるので、そこにあるダウンロードリンクをコピーします。以下のような URL です。

https://download.llamameta.net/*?Policy=...&Signature=...&Key-Pair-Id=...

最初に git clone したレポジトリの download.sh を実行すると URL を入力できるようになるので、そのままペーストして実行します。
その後、どのモデルをダウンロードするか選択できるので、必要に応じてダウンロードします。
その際、空白なしのカンマ区切りで入力するようにしてください。
何も入力せずにEnterを押すと、7B, 13B, 70B, 7B-chat, 13B-chat, 70B-chat の全てがダウンロードされます。

※ ちなみに Mac を使っているのですが、「リンクのアドレスをコピーする」で URL をコピーすると以下のような形の URL となってしまい、これを download.sh に入れて実行すると失敗するので、気をつけましょう

https://l.facebook.com/l.php?u=https%3A%2F%2Fdownload.llamameta.net%2F%2A%3FPolicy%3D...%26Signature%3D...%26Key-Pair-Id%3D...

モデルを動かす

以下のコマンドで実行できます。[MP] となっている部分は [size] によります。
--max_seq_len は 4096 まで対応しているらしいです。
また、--max_batch_sizeexample_text_completion.py 中で同時に推論させる prompt 数に設定しておけば良いと思います。
ちなみに --max_seq_len--max_batch_size に応じてキャッシュが割り当てられるらしいので、自分の使うデバイスの性能に合わせて設定してみてください。

[MP] [size]
1 7b
2 13b
8 70b
torchrun --nproc_per_node [MP] path/to/llama/example_text_completion.py \
    --ckpt_dir path/to/llama-2-[size]/ \
    --tokenizer_path path/to/tokenizer.model \
    --max_seq_len 1024 --max_batch_size 4

実行結果

日本語にどの程度対応しているのか見たかったので Few-Shot 和訳タスクをしてみます。
ちなみに flirtatious man というのはチャラ男みたいな意味らしいです。
推論には NVIDIA A100-PCIE-40GB を 1〜8枚使用しました。

7B
英語を日本語に翻訳してください:

        The Univresity of Tokyo => 東京大学
        diffusion models => 拡散モデル
        cute panda baby => かわいいパンダの赤ちゃん
        flirtatious man =>
> 誘惑した男
        a sweet smell => 甘い香り
        a 10-year-old boy => 10歳の少年
        a 5-year-old boy => 5歳の少年
13B
英語を日本語に翻訳してください:

        The Univresity of Tokyo => 東京大学
        diffusion models => 拡散モデル
        cute panda baby => かわいいパンダの赤ちゃん
        flirtatious man =>
> 軽口でいる男性
        a piece of cake => 簡単なこと
        the MIT => MIT
        AI researchers => AI研究者
        I want to be a good person => 私は良
70B
英語を日本語に翻訳してください:

        The Univresity of Tokyo => 東京大学
        diffusion models => 拡散モデル
        cute panda baby => かわいいパンダの赤ちゃん
        flirtatious man =>
> ナンパ男
        the best man in the world => 世界一の男
        a good man => 良い男
        a bad man => 悪い男
        a very good man => とても良い男
        a very bad man => 

7B/13B はまぁ......という感じがしますが、70Bはなかなか良さげな訳をしてくれそうですね!
他にも色々試した感じ日本語もそこそこ書けそうなので、期待できそうです!!!

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8