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ヶ月間連続的に行われました。事前トレーニングデータは、主に公開データであり、研究論文やソーシャルメディアの会話からいくつかのデータソースが使用されました。

なぜ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!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

機械学習

インフレクション-2はGoogleのPaLM-2を超える:AI言語モデルのブレークスルー

In a groundbreaking announcement, Inflection AI, the creators of the popular PI AI Personal Assistant, unveiled their...

AI研究

ETHチューリッヒとマイクロソフトの研究者らが提案したX-Avatarは、人間の体の姿勢と顔の表情をキャプチャできるアニメーション可能な暗黙の人間アバターモデルです

ポーズ、見つめること、表情、手のジェスチャーなど、総称して「ボディランゲージ」と呼ばれるものは、多くの学術的研究の対...

AIニュース

OpenAIを使用してカスタムチャットボットを開発する

はじめに チャットボットは自動化されたサポートと個別の体験を提供し、ビジネスが顧客とつながる方法を革新しました。人工知...

機械学習

GLIP オブジェクト検出への言語-画像事前学習の導入

今日は、言語-画像の事前学習であるCLIPの素晴らしい成功を基に、物体検出のタスクに拡張した論文であるGLIPについて掘り下げ...

AI研究

シリコンボレー:デザイナーがチップ支援のために生成AIを活用

今日公開された研究論文によれば、生成AIは、最も複雑なエンジニアリングプロジェクトの1つである半導体設計を支援できる方法...

AI研究

「ユーレカ!NVIDIAの研究によるロボット学習の新たな進展」

ロボットに複雑なスキルを教えることができるNVIDIA Researchによって開発された新しいAIエージェントは、ロボットの手にペン...