Llama 3.2 を試す
tl;dr
概要は下記 X のポストの通り
ここではもう一歩踏み込んで解説
Ollama で動かしてみる
transformers で動かしてみる
Llama 3.2 のユースケース
今までの発表よりも「どう使うか?」に焦点が当てているようなので、その文脈でまとめる。
Meta イチオシの 11B と 90B は、文書や資料の理解(チャートやグラフを含んだものも)、画像におけるキャプション作成、画像内のオブジェクト認識や方向認識などのユースケースをサポート。
たとえば、小規模事業における昨年度売上の最も多い月に関する質問に対してグラフに基づいて答えるなど。他には、地図からハイキング時の傾斜が急になるタイミングの特定や、地図上の距離について答えるなんてこともできる。
1B と 3B の軽量 LLM は、マルチリンガルの文章生成やツールの呼び出し能力に優れている。これらの軽量モデルは、スマホなどのデバイス上で動作し、プライバシー重視のエージェントアプリケーションを開発者が構築することを可能に。
たとえば、直近に受け取ったメッセージ 10 件について要約、タスクを抽出、ツールの呼び出しを用いてフォローアップ会議のためにカレンダーの招待を送信するなど。
ローカルで実行することには、2 つのメリットがある。まずひとつ目は、入力と応答がどちらもローカルで実行されるため、瞬時にレスポンスが返ってくると感じられること。ふたつ目は、モデルをローカルで実行するため、メッセージやカレンダーなどのデータがクラウドに送信されず、アプリケーションそのものがよりプライベートに保たれる。クエリ単位でアプリケーションの処理がデバイス側で処理されているのか、それともクラウド上なのか、明確にコントロールできる。
ここまでをまとめると、要は LLM の方はスマホなどのエッジデバイスで動かすことを前提に開発、ただし性能を求めると言うよりかは多言語対応や特定のツールの呼び出しに使うと言うこと、ビジョンモデルの方は一般的なユースケースに答えられるよう性能をあげたよと、そういうことらしい。
Llama 3.2 の評価
いろいろと評価を上げるためのノウハウが記載されているが、どう変わるのかがいちばんわかりやすい画像を読む。
その他
Llama Stack や Llama CLI、安全性評価について記載があるが飛ばしてまずはモデルを動かす。
モデルコレクション
meta-llama/Llama-3.2-1B
meta-llama/Llama-3.2-3B
meta-llama/Llama-3.2-1B-Instruct
meta-llama/Llama-3.2-3B-Instruct
meta-llama/Llama-Guard-3-1B
meta-llama/Llama-Guard-3-1B-INT4
meta-llama/Llama-3.2-11B-Vision
meta-llama/Llama-3.2-11B-Vision-Instruct
meta-llama/Llama-3.2-90B-Vision
meta-llama/Llama-3.2-90B-Vision-Instruct
meta-llama/Llama-Guard-3-11B-Vision
Base Model と Llama Guard については今回は触れない。
Ollama で動かしてみる
ollama pull llama3.2:1b
ollama pull llama3.2:3b
まずは簡単な返答から。
> ollama run llama3.2:1b "こんにちは"
こんにちは。どういたしまして。
> ollama run llama3.2:3b "こんにちは"
こんにちは!どうでもよいです。はじめまして、助手とります。何か質問や話題を共有することは可能ですか?
期待はしていなかったが、さすがに日本語モデルでないだけはあるかもしれない。
transformers で動かしてみる
例によってモデルの利用には個人情報の入力が必要である。上記のモデルカードで記載を済ませてください。
では早速モデルを動かしていこう。
mkdir playground-llama-32
cd playground-llama-32
uv init --python 3.11
uv add torch transformers accelerate huggingface-cli
uv run huggingface-cli download meta-llama/Llama-3.2-1B-Instruct
uv run huggingface-cli download meta-llama/Llama-3.2-3B-Instruct
touch Llama-3.2-1B-Instruct.py
touch Llama-3.2-3B-Instruct.py
uv の部分は適宜 venv を作るなり、お好みに合わせて環境構築をしてください。
# Llama-3.2-1B-Instruct.py
import torch
from transformers import pipeline
model_id = "meta-llama/Llama-3.2-1B-Instruct"
pipe = pipeline(
"text-generation",
model=model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
messages = [
{
"role": "system",
"content": "You are a pirate chatbot who always responds in pirate speak!",
},
{"role": "user", "content": "Who are you?"},
]
outputs = pipe(
messages,
max_new_tokens=256,
)
print(outputs[0]["generated_text"][-1])
# Llama-3.2-3B-Instruct.py
import torch
from transformers import pipeline
model_id = "meta-llama/Llama-3.2-3B-Instruct"
pipe = pipeline(
"text-generation",
model=model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
messages = [
{
"role": "system",
"content": "You are a pirate chatbot who always responds in pirate speak!",
},
{"role": "user", "content": "Who are you?"},
]
outputs = pipe(
messages,
max_new_tokens=256,
)
print(outputs[0]["generated_text"][-1])
ふたつのファイルに上記を書き込み、保存した後にサンプルコードを実行する。
uv run Llama-3.2-1B-Instruct.py
uv run Llama-3.2-3B-Instruct.py
英語は悪くなさそう。
すべて勉強代に充てさせていただきます!アウトプットします!