🐔

MacのOllama環境でLlama-3-Swallow-8Bを使ってみた

2024/07/01に公開

はじめに

どんな人向けの記事?

  • ローカルLLMに興味がある方
  • Llama-3-Swallow-8BとLlama-3-ELYZA-JP-8Bの比較をしたい方

内容

  • Macでのollama環境構築
  • transformerモデルからggufモデル、ollamaモデルを作成する手順
  • Llama-3-Swallow-8Bの出力例
  • Llama-3-ELYZA-JP-8Bとの比較

本日、Llama-3-Swallowが公開されました。

https://zenn.dev/tokyotech_lm/articles/f65989d76baf2c

本記事では、前回の記事で購入したMac Studioを用いてLlama-3-Swallowの8Bモデルを使ってみます。

https://zenn.dev/robustonian/articles/selection_of_gpus_for_local_llm

Ollamaモデルファイルの作成まで

ここでは、MacでOllama用のLlama-3-Swallow-8Bモデルを作成します。

Step 1. Ollamaのインストール (インストールしていない場合)

OllamaのHPからmac用のインストーラをダウンロードし、インストールします。

https://ollama.com/download/mac

Step 2. llama.cppのbuild

下記のコマンドでllama.cppをクローン&ビルドする。

git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make

Step 3. transformerモデルのダウンロード

Llama-3-Swallow-8B-Instruct-v0.1のtransformerモデルをダウンロードします。

cd ../
mkdir models
cd models
git lfs install
git clone https://huggingface.co/tokyotech-llm/Llama-3-Swallow-8B-Instruct-v0.1

https://www.hpymt.net/tsu/install_brew/

Step 3. ggufモデルへの変換

ここではダウンロードしたtransformerモデルをf16-ggufモデルに変換します。

  • llama.cpp用のpython仮想環境作成(作成していない場合)
cd ../
python3 -m venv venv
source venv/bin/activate
python -m pip install -r ./llama.cpp/requirements.txt 
  • f16-ggufモデルへの変換
python ./llama.cpp/convert_hf_to_gguf.py ./models/Llama-3-Swallow-8B-Instruct-v0.1/ --outtype f16 --outfile ./models/Llama-3-Swallow-8B-Instruct-v0.1-f16.gguf
  • オプション:Q4_K_Mへの量子化を行う場合
 ./llama.cpp/llama-quantize ./models/Llama-3-Swallow-8B-Instruct-v0.1-f16.gguf ./models/Llama-3-Swallow-8B-Instruct-v0.1_Q4_K_M.gguf q4_K_M

Step 4. Ollama modelの作成

  • Ollama Modelfileの作成
nano Modelfile_Llama-3-Swallow-8B-Instruct-v0.1-f16

Modelfile_Llama-3-Swallow-8B-Instruct-v0.1-f16の内容はllama3-8bモデルを参考に、下記のように記載します。

FROM ./Llama-3-Swallow-8B-Instruct-v0.1-f16.gguf

TEMPLATE "{{ if .System }}<|start_header_id|>system<|end_header_id|>

{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>

{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>

{{ .Response }}<|eot_id|>"
PARAMETER num_keep 24
PARAMETER stop <|start_header_id|>
PARAMETER stop <|end_header_id|>
PARAMETER stop <|eot_id|>
  • Ollama Modelへの変換
ollama create Llama-3-Swallow-8B-Instruct-v0.1-f16 -f Modelfile_Llama-3-Swallow-8B-Instruct-v0.1-f16.txt

以上で、Ollama用モデルの作成が完了しました。

Step 5. 実行

ollama run Llama-3-Swallow-8B-Instruct-v0.1-f16

使用例

プロンプト

下記の設定で、2000字程度の日本語短編小説を作成してください。

# 設定
## 主人公
* 知性を持った金のニワトリ。
* 名前は「ゴスラム」
* 毎日一つだけ金の卵を産む。
* 逆境を糧に成長する。

## 世界観
22世紀初頭。人智を超えたAIの登場により、あらゆるモノ・サービスの価値が目まぐるしく変化する時代。

## イントロ:
主人公ゴスラムは、自分の産んだ金の卵を売ることで生計を立てていた。
ところが、AIが低コストで金を生成する方法を見つけてからは、金の価値が暴落してしまった。危機感を覚えたゴスラムは、起死回生のあるビジネスを始めることを決意する。

Llama-3-Swallow-8B-Instruct-v0.1-f16の出力

  1. ゴスラムは、毎日一つの金の卵を産み出す知性を持ったニワトリでした。しかし、22世紀初頭の人智を超えたAIの登場により、あらゆるモノ・サービスの価値が目まぐるしく変化していました。

続けてください。

  1. ゴスラムは、金の卵を売ることで生計を立てていました。しかし、AIが低コストで金を生成する方法を見つけてからは、金の価値が暴落してしまいました。危機感を覚えたゴスラムは、起死回生のあるビジネスを始めることを決意しました。

  2. ゴスラムは、まず自分自身の価値について考え直しました。そして、ニワトリとしての知性と能力に焦点を当て、新しいビジネスのアイデアを思いつきました。それは、知識共有サイトでの情報提供でした。

  3. ゴスラムは、毎日一つの金の卵を産み出すたびに、その中身である金についての知識や情報を書き留め始めました。やがて、それらの情報は、ニワトリとしてのゴスラムならではの視点とともに、独自の価値を持つようになりました。

  4. ゴスラムは、知識共有サイトで自分のコンテンツを公開し始めました。そして、そのコンテンツは多くの人たちにとって非常に役立っていきました。ゴスラムは、新しいビジネスが軌道に乗り始めたことを喜びました。

  5. しかし、ゴスラムはまだ不安でした。今度はAIによって自分の価値を奪われるのではないかと心配していました。しかし、その心配は杞憂でした。ゴスラムのコンテンツは、人智を超えたAIでは作り出すことのできないものでした。

  6. ゴスラムは、新しいビジネスの成功に満足しました。そして、これからも逆境を糧にして成長していくことを決意しました。

結果

  • 日本語で出力するように指定しないと、日本語で出力されないことがありました。
  • 1段落目で出力が中止してしまったので、「続けてください。」と入力しました。
  • 文字数は約700字

おまけ:Meta-llama-3-8B、Llama-3-ELYZA-JP-8Bとの比較

llama3:8b-instruct-fp16の出力(1006文字)

ゴスラムの挑戦

22世紀初頭、人智を超えたAIの登場により、世界は激変した。何でもあり、何でもできるというAIが登場し、人間の仕事を奪い去るようになった。金や物質的な財宝は価値がなくなり、虚構の貨幣に置き換えられた。

ゴスラムは、自分自身が産む金の卵を売ることで生計を立てていた。彼は金のニワトリであり、毎日一つだけ金の卵を産むという能力を持っていた。しかし、AIが低コストで金を生成する方法を見つけてからは、ゴスラムの生き甲斐も危うい状況になった。

ゴスラムは、危機感を覚え始めた。彼の生計が危ないと知り、起死回生のあるビジネスを始めることを決意した。彼は、金の卵の代わりに、新しい価値を持つ商品を作り出すことにした。

ゴスラムは、夜明け前、彼のコックピットに集められた友達たちと会話した。彼らは、AIが生み出した虚構の貨幣を嫌っており、新しい価値を持つ商品を探しているということを話した。

「新しい価値を持つ商品を作り出す」というゴスラムの提案に、彼らの目は光った。彼らは、ゴスラムが何者であるか知っていたため、彼のニワトリの能力を信頼していた。

次の日、ゴスラムは、新しいビジネスの計画を始めた。彼は、友達たちと共に、新しい価値を持つ商品を作り出すチームを作った。

その日から、ゴスラムたちは、新しい商品を作り出した。彼らは、AIが生み出した虚構の貨幣を使ってなくて済む、自然界に由来する材質を基盤とした商品を作り出した。

一方、ゴスラムは、彼のニワトリの能力を活かした商品を作ることにした。彼は、新しい卵を作り出し、それを売り上げた。新しい卵は、価値が高く評判が良かったため、ゴスラムの生計は立て直された。

ゴスラムは、彼のニワトリの能力を活かすことで、新しいビジネスを成功させた。彼は、AIに勝つことができたと自信を持った。

「金の卵」という名前で売り上げた新しい商品は、大ヒットした。ゴスラムは、新しいビジネスによって、生計を立て直し、名声を得た。

ゴスラムが成功したことにより、彼のニワトリの能力はより高く評価されるようになった。彼は、新しいビジネスを作り出し、AIに勝つことができたと自信を持った。

「金の卵」は、21世紀初頭に生まれた新しい商品の象徴となった。ゴスラムは、新しい時代において、新しい価値を持つ商品を作り出すことで成功したという証左を残した。

Llama-3-ELYZA-JP-8B-f16の出力(839字)

タイトル:黄金の卵と人工知能

22世紀初頭、世界は大変革期にありました。人智を超えたAIが現れ、あらゆるモノ・サービスの価値をめまぐるしく変化させていたのです。ゴスラムは、そんな時代に生きた一匹の金のニワトリでした。彼は、知性を持っていて、毎日一つだけ金の卵を産むことができました。

ゴスラムが産んだ金の卵は、高値で取引されていました。彼は、その卵を売ることで生計を立てていたのです。しかし、そんな生活も長く続きませんでした。AIが低コストで金を生成する方法を見つけてしまったからです。急速に金の価値が暴落し始め、ゴスラムの生活は一変してしまいました。

危機感を覚えたゴスラムは、起死回生のあるビジネスを始めることを決意しました。彼は、自らの強みである知性と金の卵を活かす方法を考えるようになります。

ある日、ゴスラムは、人工知能に匹敵する知性を持つAIの存在を知りました。世界では、そのAIが次々と新しいビジネスモデルやサービスを生み出して成功しています。彼は、思いつきました。自分もそのAIを活用し、新たなビジネスを始めることができるのではないかと。

ゴスラムは、金の卵を産む能力と知性を持つAIの力で新しいビジネスをスタートしました。金の卵を材料にした、高付加価値の商品を生み出すのです。彼は、その商品を販売し始めました。

当初は、苦戦したものの、ゴスラムは諦めませんでした。逆境を糧に成長するという彼の信念が、強い心を作り続けていたからです。やがて、商品が評判を呼び始めます。人々は、金の卵を使用した高付加価値の商品に大きな関心を持つようになりました。

ゴスラムは、成功しました。彼は、AIの力と自らの知性を組み合わせることで、新たな道を見いだすことができたのです。金の卵が持つ本来の価値を再び高めることができたのです。

ゴスラムは、自信を持って前進し始めました。彼は、世界に新しいビジネスモデルを提案する存在として認知されていくようになります。

ChatGPT-4oによる総評

以下の表に、各モデルの出力結果を評価したものをまとめました。

項目 Swallow llama3:8b ELYZA
文字数 約700字 1006字 839字
設定の反映 主人公、世界観、イントロは反映されているが、深く掘り下げられていない 設定は全体的に反映されており、詳細に描写されている 設定は反映されているが、ビジネスの詳細があまり深くない
ストーリーの一貫性 短く、簡潔だが少し浅い 長く、詳細で、物語の一貫性が保たれている 一貫しているが、ストーリーがやや短い
創造性 ニワトリの知識共有というユニークなアイデア 新しい価値を持つ商品の創出という発展的なアイデア AIと協力するビジネスモデルの提案
キャラクターの成長 ゴスラムの成長が描かれている ゴスラムの挑戦と成長が詳細に描かれている ゴスラムの成長が描かれているが詳細は少ない
全体評価 ★★★☆☆ ★★★★☆ ★★★☆☆

総評

  • Llama-3-Swallow-8B-Instruct-v0.1-f16は、設定を反映しているものの、ストーリーが短く、浅く感じられるため、詳細な描写が欠けている。
  • llama3:8b-instruct-fp16は、設定を全体的に反映し、詳細な描写とストーリーの一貫性があり、最も高評価。
  • Llama-3-ELYZA-JP-8B-f16は、設定を反映しているが、ストーリーがやや短く、ビジネスの詳細が少ないため、もう少し詳細な描写が望まれる。

所感・まとめ

ほんの少し使っただけですが、Swallow-8Bは本家llama3-8Bと同様に日本語での出力を指定しないと英語で回答することが多かったです。
物語の面白さという観点では、残念ながらSwallowが一番微妙な感じでした。まあ得意なタスクは他にあるということですかね。

GPT-4oでは本家の評価が高かったですが、個人的には続きが気になる面白さという観点では本家が、ビジネスアイデアという観点ではELYZAのポイントが高かったです。

ここまで見ていただきありがとうございました。次回もぜひ、よろしくお願いします。

Discussion