【zephyr 7b beta】遂にGPT4を超えるLLM現る!?HuggingFaceの最強AI
皆さん、最新LLMの「zephyr-7b-beta」をご存知ですか?約70億ものパラメータを持っており、ユーザーの質問に答えたり、文章を作ったりする能力を身につけています。
弊社では普段からLLMについてリサーチているのですが、今回のzephyr-7b-betaには、期待に胸が高鳴ります!
さらに、WritingやRoleplayなどに関しては、あのGPT-4に迫る精度を達成しているそう。
凄いですね。
では、zephyr-7b-betaの使い方や、実際に使ってみた感想、最後にはGPT-4との比較をまとめています。
この記事を最後まで読むと、zephyr-7b-betaの威力を思い知らされるでしょう!
ぜひ最後までご覧ください!
zephyr-7b-betaの概要
「zephyr-7b-beta」はLLMの一種で、人間のように文章を理解し、生成することができます。このLLMは、大量のテキストデータを学習して、質問に答えたり、文章を作ったりする能力を身につけています。
zephyr-7b-betaの「7b」は、Zephyrのパラメータ数を示しており、70億もあることを意味しています。これはかなり大きなサイズで、多くの情報を処理できる能力を持っています。また、「beta」は、このプログラムがまだ開発中であり、完全な形ではないことを示しています。つまり、とても賢いですが、まだ完璧ではないということです。
このモデルは「mistralai/Mistral-7B-v0.1」をファインチューニングしたもので、公開データセットと合成データセットとの合成セットを用いて、Direct Preference Optimization (DPO) で追加学習されています。
このDPOとは、「LLMの挙動を正確にコントロールすることは難しい」という課題を解決するアルゴリズムで、効率的にパラメータ調整をすることができます。
また、Zephyrは特に、文章を翻訳したり、要約したりするのが得意ですが、プログラミングのコードを書いたり、数学の問題を解いたりするのは苦手です。また、学習したデータに基づいて文章を生成するため、時には不適切な内容を含むことがあります。
上記の図を見ても分かる通り、WritingやRoleplayなど、あのGPT-4に迫る精度を達成しています。ただし、CodingとMathは特に精度が低いですね。
なお、最近話題のGPT-4 All toolsについて詳しく知りたい方は、下記の記事を合わせてご確認ください。
→【GPT4 All tools】ChatGPTが切り替えなしで全機能使用可能&ファイル入力対応!使い方解説
zephyr-7b-betaの料金体系
zephyr-7b-betaはオープンソースであるため、無料で利用可能です。
ただし、LLMを利用する際には、モデルの実行時間、使用するメモリの量、データの転送量などの、計算リソースの使用量に応じて料金が発生します。
zephyr-7b-betaの使い方
今回はGoogle Colabで実行していきます。
まず、以下のコードを実行して、必要なライブラリのインストールをしましょう。
!pip install transformers
!pip install accelerate
次に、以下のコードを実行して、モデルをロードし、テキスト生成の準備を行います。
import torch
from transformers import pipeline
pipe = pipeline("text-generation", model="HuggingFaceH4/zephyr-7b-beta", torch_dtype=torch.bfloat16, device_map="auto")
最後に、以下のコードを実行すると、モデルを使用してテキストを生成できます。
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Tell me a joke."}
]
prompt = pipe.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
outputs = pipe(prompt, max_new_tokens=256, do_sample=True, temperature=0.7, top_k=50, top_p=0.95)
print(outputs[0]["generated_text"])
なお、上記のリスト型のmessage変数内では、以下の2つを定義しています。
{"role": "user", "content": "Tell me a joke."}:「Tell me a joke(ジョークを言って)」が、プロンプトの内容
{"role": "system", "content": "You are a helpful assistant."}: 「You are a helpful assistant(あなたは優秀なアシスタントです)」が、LLMに与える役割
上記のコードを実行すると、以下の様に出力されました。
<|system|>
You are a helpful assistant.</s>
<|user|>
Tell me a joke.</s>
<|assistant|>
Why did the scarecrow win an award?
Because he was outstanding in his field!
ジョークの内容は「カカシはなぜ賞を受賞したのか?彼はその分野で傑出していたからだ!」でした。これは英語圏では笑いが起こるのですかね。
なお、100B超えの巨大なモデルを自前のPCで動かす方法について詳しく知りたい方は、下記の記事を合わせてご確認ください。
→【Petals】パラメーター100B超えのLLMを自宅のPCで動かす方法
zephyr-7b-betaを実際に使ってみた
これ以降は、以下の記事からご確認ください。
他の記事もご覧になりたい方は、こちらをご覧ください。