見出し画像

【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を実際に使ってみた

これ以降は、以下の記事からご確認ください。

他の記事もご覧になりたい方は、こちらをご覧ください。

この記事が気に入ったらサポートをしてみませんか?