「LlaMA 2の始め方 | メタの新しい生成AI」
Introduction to LlaMA 2 | New AI for Meta Generation
イントロダクション
OpenAIからGPTがリリースされて以来、多くの企業が独自の堅牢な生成型大規模言語モデルを作成するための競争に参入しました。ゼロから生成型AIを作成するには、生成型AIの分野での徹底的な研究と数多くの試行錯誤が必要な場合があります。また、大規模言語モデルの効果は、それらが訓練されるデータに大きく依存するため、高品質なデータセットを注意深く編集する必要があります。さらに、これらのモデルを訓練するためには膨大な計算能力が必要であり、多くの企業がアクセスできない状況です。そのため、現時点では、OpenAIやGoogleを含むわずかな企業しかこれらの大規模言語モデルを作成できません。そして、ついにMetaがLlaMAの導入でこの競争に参加しました。
学習目標
- 新しいバージョンのLlaMAについて知る
- モデルのバージョン、パラメータ、モデルのベンチマークを理解する
- Llama 2ファミリのモデルにアクセスする
- さまざまなプロンプトでLlaMA 2を試して出力を観察する
この記事はData Science Blogathonの一環として公開されました。
Llamaとは何ですか?
LlaMA(Large Language Model Meta AI)は、特にMeta AI(元Facebook)が所有する会社であるMeta AIによって開発された基礎となる大規模言語モデルのグループである生成型AIモデルです。Metaは2023年2月にLlamaを発表しました。Metaは、7、13、33、および65兆のパラメータを持つコンテキスト長2kトークンの異なるサイズのLlamaをリリースしました。このモデルは、研究者がAIの分野での知識を進めるのを支援することを目的としています。小型の7Bモデルは、計算能力が低い研究者がこれらのモデルを研究することを可能にします。
LlaMaの導入により、MetaはLLMの領域に参入し、OpenAIのGPTやGoogleのPaLMモデルと競合しています。Metaは、限られた計算リソースで小さなモデルを再トレーニングまたは微調整することで、それぞれの分野で最先端のモデルと同等の結果を達成できると考えています。Meta AIのLlaMaは、LlaMAモデルファミリが完全にオープンソースであり、誰でも無料で使用できるだけでなく、研究者のためにLlaMAの重みを非営利目的で公開しているため、OpenAIやGoogleのLLMとは異なります。
- 「クルーズ、サンフランシスコでの自動運転車のフリートを事故後に削減することに同意」
- 「2023年の最高のAIスプレッドシートツール」
- 『Amazon SageMaker Clarifyを使用して、臨床設定で医療上の決定を説明する』
前進
LlaMA 2は、Metaが2023年7月にリリースした前バージョンのLlaMAバージョン1を上回ります。LlaMA 2は、7B、13B、および70Bパラメータモデルの3つのサイズで登場しました。LlaMA 2は、リリース時にHugging Faceで最高のスコアを達成しました。すべてのセグメント(7B、13B、70B)を通して、Hugging Faceで最高のパフォーマンスを発揮するモデルはLlaMA 2から派生しており、微調整または再トレーニングされました。
Llama 2は2兆のプレトレーニングトークンで訓練されました。すべてのLlama 2モデルのコンテキスト長は4kです(Llama 1のコンテキスト長の2倍)。Llama 2は、MMLU、TriviaQA、Natural Question、HumanEvalなどのさまざまなベンチマークで、FalconやMPTなどの最先端のオープンソースモデルを上回りました(Meta AIのウェブサイトで包括的なベンチマークスコアを見つけることができます)。さらに、Llama 2は、チャット関連のユースケースに対して約100万件の人間の注釈付きデータでトレーニングを行いました。これらのチャットモデルはHugging Faceのウェブサイトで簡単に使用できます。
LlaMA 2へのアクセス
Llama 2のソースコードはGitHubで利用できます。オリジナルの重みで作業する場合は、Meta AIのウェブサイトに名前とメールアドレスを提供する必要があります。Meta AIのウェブサイトに移動して、名前、メールアドレス、組織(学生の場合は学生)を入力してください。次に、下にスクロールし、[同意して続ける]をクリックします。これで、モデルの重みをダウンロードできるメールが届きます。以下のようなフォームになります。
モデルで作業する方法は2つあります。1つは、メール内の指示とリンクを使用してモデルを直接ダウンロードする方法(ハードな方法で、まともなGPUがある場合にのみ有効です)、もう1つはHugging FaceとGoogle Colabを使用する方法です。この記事では、誰でも試すことができる簡単な方法について説明します。Google Colabに進む前に、Hugging Faceのアカウントを設定し、推論APIを作成する必要があります。その後、Hugging FaceのLlama 2モデルに移動する必要があります(ここをクリックするとできます)。そして、Meta AIのウェブサイトに提供したメールアドレスを入力します。そうすると、認証され、以下のようなものが表示されます。
さて、Hugging Faceを介してLlama 2モデルをダウンロードし、それを使って作業を開始することができます。
Hugging FaceとColabでのLlaMA
最後のセクションでは、Llama 2モデルをテストする前に必要なものを見てきました。Google Colabで必要なライブラリをインポートして始めましょう。これはpipコマンドで行うことができます。
!pip install -q transformers einops accelerate langchain bitsandbytes
Llama 2で作業を開始するためには、これらの必要なパッケージをインストールする必要があります。また、モデルをダウンロードするためにHugging Faceのtransformersライブラリも必要です。einops関数はモデル内で簡単な行列の乗算を実行します(Einstein Operations / Summation表記を使用します)、accelerateは推論を高速化するためにビットとバイトを加速させます。langchainは私たちのllamaを統合します。
次に、Hugging FaceにColabを介してログインし、Hugging FaceのAPIキーを使用してllamaモデルをダウンロードすることができます。そのためには、以下の操作を行います。
!huggingface-cli login
ここで、先に作成したHugging Face Inference APIキーを入力します。そして、Add token as git credential? (Y/n)と表示されたら、nと回答することができます。これでHugging FaceのAPIキーにログインし、モデルをダウンロードする準備ができました。
Hugging FaceのAPIキー
さて、モデルをダウンロードするためには、以下のコードを記述します。
from langchain import HuggingFacePipeline
from transformers import AutoTokenizer
import transformers
import torch
model = "meta-llama/Llama-2-7b-chat-hf"
tokenizer = AutoTokenizer.from_pretrained(model)
pipeline = transformers.pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
torch_dtype=torch.bfloat16,
trust_remote_code=True,
device_map="auto",
max_length=1000,
eos_token_id=tokenizer.eos_token_id
)
- ここでは、Google Colabの無料GPUで完璧に動作するLlama 2 7Bバージョンへのパスをmodel変数に指定しています。それ以上のバージョンでは、Colabの無料版では不可能な追加のVRAMが必要です。
- 次に、Llama 2 7BモデルのトークナイザーをAutoTokenizer.from_pretrained()関数に指定してダウンロードします。
- その後、transformerのpipeline関数を使用し、モデルなどのすべてのパラメーターを渡します。device_map = auto tokenizerは、colabでGPUを使用するためのモデルを許可します。
- 最大出力トークンを1000とし、torchのデータ型をfloat16に設定します。最後に、モデルが回答を書き込む際に使用するeos_token_idを渡します。
- これを実行すると、モデルがColabにダウンロードされますが、これには時間がかかります。ダウンロードサイズは約10GBです。次に、以下のコードを使用してHuggingFacePipelineを作成します。
llm = HuggingFacePipeline(pipeline = pipeline, model_kwargs = {'temperature':0})
ここで、モデルの温度を設定し、作成したパイプラインをpipeline変数に渡します。このHuggingFacePipelineを使用して、ダウンロードしたモデルを使用することができます。
プロンプトテンプレート
モデル用のプロンプトテンプレートを作成し、それをテストします。
from langchain import PromptTemplate, LLMChain
template = """
あなたは人々に役立つ情報を提供する知的なチャットボットです。
文の先頭に番号付きの矢印を付けて応答を返します
{query}
"""
prompt = PromptTemplate(template=template, input_variables=["query"])
llm_chain = LLMChain(prompt=prompt, llm=llm)
- ここでは、テンプレートはシンプルです。Llamaモデルにユーザーのクエリに答えさせ、番号付きのポイントとして返します。
- その後、このテンプレートをPrompTemplate関数に渡し、templateとinput_variableのパラメーターを割り当てます。
- 最後に、Llama LLMとPromptをチェーンしてモデルの推論を開始します。さあ、モデルについての質問をしてみましょう。
print(llm_chain.run('氷河の溶解の3つの原因は何ですか?'))
したがって、私たちはモデルに氷河の溶解の3つの可能な原因をリストアップするように依頼しました。モデルは次のように返答しました:
モデルは非常に優れた結果を出しました。最も良い部分は、ポイントを表すために絵文字の番号付けを使用し、出力には正確に3つのポイントが含まれていることです。さらに、氷河を表すために水の満ち潮の絵文字を使用しています。このように、Hugging FaceとColabを使用してLlama 2で作業を開始することができます。
結論
この記事では、Meta AIが作成し公開したLlaMA(Large Language Model Meta AI)モデルについて簡単に説明しました。そのモデルの異なるサイズについて学び、バージョン2であるLlama 2が他の最先端のオープンソースLLMと比較して異なるベンチマークで明確に優れていることを見てきました。最後に、Llama 2モデルのトレーニング重みにアクセスする手順について説明しました。最後に、Hugging FaceとLangChainライブラリを使用してGoogle ColabでLlama-2 7Bチャットバージョンを実行しました。
主なポイント
この記事からの主なポイントは次のとおりです:
- Metaは、研究者がAIについてより深く理解するのを支援するためにLlamaモデルを開発しています。
- 特に小さい7BバージョンのLlamaモデルは効率的にトレーニングでき、非常に優れたパフォーマンスを発揮します。
- さまざまなベンチマークを通じて、Llama 2は他の最先端のオープンLLMと比較して競争に勝っていることが証明されました。
- MetaのLlama 2をOpenAIのGPTやGoogleのPaLMと異なる要素は、それがオープンソースであり、誰でも商業アプリケーションに使用することができることです。
よくある質問
この記事に表示されているメディアはAnalytics Vidhyaの所有ではなく、著者の裁量で使用されています。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles