Falcon AI 新しいオープンソースの大規模言語モデル
Falcon AIは新しいオープンソースの大規模な言語モデルです
はじめに
Open AIによるGPT(Generative Pre Trained)の発表以来、世界はGenerative AIによって大いに沸き立っています。その後、多くのGenerative Modelsが登場しました。新しいGenerative Large Language Modelsがリリースされるたびに、AIは人間の知性により近づいてきました。しかし、Open AIコミュニティはGPTファミリーの強力なLarge Language Modelsをクローズドソース化しました。幸いなことに、Falcon AIという非常に能力が高いGenerative Modelが他のLLMsを凌駕し、オープンソースとなり、誰でも使用できるようになりました。
学習目標
- Falcon AIがLLM Leaderboardのトップになった理由を理解する
- Falcon AIの能力を学ぶ
- Falcon AIのパフォーマンスを観察する
- PythonでFalcon AIをセットアップする
- カスタムプロンプトでLangChainでFalcon AIをテストする
この記事はData Science Blogathonの一部として公開されました。
Falcon AIとは何ですか?
Falcon AI、主にFalcon LLM 40Bは、UAEのTechnology Innovation Institute(TII)によってリリースされたLarge Language Modelです。40Bは、このLarge Language Modelが使用するパラメータの数を示しています。TIIは、トレーニングされたトークンが1500億個の7B、つまり700億個のパラメータモデルを開発しました。一方、Falcon LLM 40Bモデルは、1兆個のRefinedWebのトークンでトレーニングされています。このLLMの特徴は、このモデルが透明かつオープンソースであることです。
Falconは、自己回帰型のデコーダーモデルです。Falcon AIのトレーニングは、384台のGPUが接続されたAWS Cloud上で2ヶ月間連続的に行われました。事前トレーニングデータは、主に公開データであり、研究論文やソーシャルメディアの会話からいくつかのデータソースが使用されました。
- GPT-1からGPT-4まで:OpenAIの進化する言語モデルの包括的な分析と比較
- NVIDIAのCEO、ヨーロッパの生成AIエグゼクティブが成功の鍵を議論
- Deep learning論文の数学をPyTorchで効率的に実装する:SimCLR コントラスティブロス
なぜFalcon AIを選ぶのですか?
Large Language Modelは、トレーニングに使用されるデータに影響を受けます。その感度はデータの変化とともに異なります。Falconのトレーニングには、ウェブサイト(RefinedWebデータセット)から抽出された高品質なデータの一部が含まれています。このデータには、利用可能なデータソースの他に、さまざまなフィルタリングと重複排除のプロセスが行われました。Falconのアーキテクチャは推論に最適化されています。Falconは、OpenLLM LeaderboardでGoogle、Anthropic、Deepmind、LLaMaなどの最先端のモデルをはるかに上回っています。
これらすべてに加えて、最も大きな違いは、商用利用に制限がないオープンソースであることです。つまり、誰でも自分のデータでFalconを微調整して、このLarge Language Modelから自分のアプリケーションを作成することができます。Falconには、Falcon-7B-InstructとFalcon-40B-InstructというInstructバージョンも用意されており、会話データで微調整されています。これらは直接使ってチャットアプリケーションを作成することができます。
初めてのFalcon Large Language Model
このセクションでは、Falconのモデルの1つを試してみます。使用するのはFalcon-40Bモデルで、OpenLLM Leaderboardのチャートでトップになっています。具体的には、Falcon-40B-InstructというInstructバージョンを使用します。これは会話データで既に微調整されているため、すぐに始めることができます。Falcon Instructモデルとのやり取りの方法の1つは、HuggingFace Spacesを介して行うことです。HuggingFaceは、Falcon-40B-InstructモデルのためのSpaceを作成し、Falcon-Chatデモと呼ばれています。サイトを訪問するには、ここをクリックしてください。
サイトを開いた後、上記の画像と似たようなチャットセクションを表示するためにスクロールダウンします。入力フィールド「Type an input and press Enter」に質問を入力し、Enterキーを押して会話を開始します。Falconモデルに質問をして、その出力を見てみましょう。
画像1では、生成された応答が表示されています。Falcon-40Bモデルからのクエリへの応答としては良いものでした。HuggingFace SpacesでのFalcon-40B-Instructの動作を見ましたが、特定のコードでそれを使用したい場合はどうでしょうか?Transformersライブラリを使用することで実現できます。必要なステップについて説明します。
パッケージのダウンロード
!pip install transformers accelerate einops xformers
私たちはtransformersパッケージをインストールして、Falconなどの事前学習済みの最先端モデルをダウンロードして作業するために使用します。accelerateパッケージは、PyTorchモデルを使用しているシステムで実行するためのサポートを提供します。einopsとxformersはFalconモデルをサポートする他のパッケージです。
さて、これらのライブラリをインポートしてFalconモデルをダウンロードして作業を開始する必要があります。コードは以下の通りです:
from transformers import AutoTokenizer, AutoModelForCausalLM
import transformers
import torch
model = "tiiuae/falcon-7b-instruct"
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=200,
do_sample=True,
top_k=10,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id
)
手順
- まず、テストするモデルのパスを指定する必要があります。ここでは、Falcon-7B-Instructモデルを使用します。なぜなら、GPUのスペースを少なく占め、Google Colabの無料ティアで使用することができるからです。
- Falcon-7B-Instruct Large Language Modelのリンクはモデル変数に格納されます。
- このモデルのトークナイザをダウンロードするために、transformersのAutoTokenizerクラスのfrom_pretrained()メソッドを使用します。
- これにはLLMパスが指定され、このモデルに適したトークナイザがダウンロードされます。
- 次に、パイプラインを作成します。パイプラインを作成する際には、作業するモデルやモデルのタイプ(この場合は「text-generation」)など、必要なオプションを指定します。
- パイプラインオブジェクトには、トークナイザのタイプやその他のパラメータも指定されます。
クエリをモデルに提供してFalconの7B instructモデルの出力を観察してみましょう。Falconモデルをテストするために、以下のコードを書きます。
sequences = pipeline(
"地球温暖化を抑えるための3つの重要なことのリストを作成する"
)
for seq in sequences:
print(f"結果: {seq['generated_text']}")
Falcon Large Language Modelに、地球温暖化を抑えるための3つの重要なことのリストを作成するように依頼しました。このモデルによって生成された出力を見てみましょう。
Falcon 7B Instructモデルが良い結果を出力していることがわかります。地球温暖化の原因となる根本的な問題を指摘し、適切な解決策を提供しているため、地球温暖化を抑えることができます。
Falcon AI with LangChain
LangChainは、大規模な言語モデルを使用してアプリケーションを構築するのに役立つPythonライブラリです。LangChainには、HuggingFaceでホストされているモデルのためのHuggingFacePipelineというパイプラインがあります。したがって、LangChainを使用してFalconを使用することができるはずです。
LangChainパッケージのインストール
!pip install langchain
これにより、最新のlangchainパッケージがダウンロードされます。さて、Falconモデルのパイプラインを作成する必要があります。これは以下のように行います:
from langchain import HuggingFacePipeline
llm = HuggingFacePipeline(pipeline = pipeline, model_kwargs = {'temperature':0})
- HuggingFacePipeline()オブジェクトを呼び出し、パイプラインとモデルのパラメータを渡します。
- ここでは、「First Look: Falcon Large Language Model」セクションからパイプラインを使用しています。
- モデルのパラメータとして、temperatureの値を0として指定しています。これにより、モデルはあまり幻想的な結果を生成しません。
- これらすべてをllmという変数に渡して、Large Language Modelを保存します。
これで、PromptTemplateを含むLangChainを使用して、Large Language Modelが生成する回答を変更することができることがわかりました。また、PromptTemplateとLLMを連結するLLMChainもあります。これらのメソッドを使用してコードを書いてみましょう。
from langchain import PromptTemplate, LLMChain
template = """
あなたはインテリジェントなチャットボットです。面白い返答をするべきです。
質問: {query}
回答:"""
prompt = PromptTemplate(template=template, input_variables=["query"])
llm_chain = LLMChain(prompt=prompt, llm=llm)
手順
- まず、Prompt用のテンプレートを定義します。テンプレートは、LLMがユーザーからの質問にどのように応答すべきかを示します。
- 次に、PromptTemplate()メソッドに渡して変数に格納します。
- 次に、大規模言語モデルとPromptを結びつける必要があります。これは、LLMChain()メソッドにそれらを提供することで行います。
これでモデルが準備完了です。Promptに従って、モデルは与えられた質問に面白く答える必要があります。以下は、例のコードです。
query = "月にたどり着く方法は?"
print(llm_chain.run(query))
したがって、モデルに「月にたどり着く方法は?」というクエリを与えました。回答は以下の通りです:
Falcon-7B-Instructモデルによって生成された応答は確かに面白いです。私たちが与えたプロンプトに従い、与えられた質問に適切な回答を生成しました。これは、この新しいオープンソースモデルで達成できることのほんの一部です。
結論
この記事では、Falconと呼ばれる新しい大規模言語モデルについて説明しました。このモデルは、Llama、MPT、StableLMなどのトップモデルを打ち破り、OpenLLM Leaderboardのトップに躍り出ました。このモデルの最良の点は、オープンソースであり、誰でも商用目的でFalconを使用してアプリケーションを開発できるということです。
要点
- Falcon-40Bは現在、OpenLLM Leaderboardのトップに位置しています。
- Falconは、40兆モデルと70兆モデルの両方をオープンソース化しています。
- FalconのInstructモデルを使用すると、会話に事前トレーニングされたモデルを使用して素早く始めることができます。
- Falconのアーキテクチャを推論に最適化します。
- このモデルを微調整して、さまざまなアプリケーションを構築します。
よくある質問
この記事に表示されているメディアは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
- T5 テキストからテキストへのトランスフォーマー(パート2)
- この人工知能ベースのタンパク質言語モデルは、汎用のシーケンスモデリングを解除します
- DiffCompleteとは、不完全な形状から3Dオブジェクトを完成させることができる興味深いAIメソッドです
- ゼロから大規模言語モデルを構築するための初心者ガイド
- Magic123とは、高品質で高解像度の3Dジオメトリとテクスチャを生成するために、二段階の粗-細最適化プロセスを使用する新しい画像から3Dへのパイプラインです
- スキル開発のための集中的な機械学習ブートキャンプ
- Google AIがFlan-T5をオープンソース化 NLPタスクにおいてテキスト対テキストアプローチを使用するトランスフォーマーベースの言語モデル