TinyLlama 1.1B - サイズは関係ありません

TinyLlama 1.1B – サイズは関係ありません

ソースノード: 3081711

概要

急速に成長する人工知能と機械学習の状況の中で、TinyLlama 1.1B は注目に値する開発として登場しました。計算上の制約により、より複雑なモデルを実行することが困難になっている時代において、TinyLlama は期待を裏切ることで際立っています。コンパクトモデルの驚異的な性能を発揮します。

この記事は、コンパクトで大規模な言語モデルである TinyLlama 1.1B の分析を提供することを目的としています。パフォーマンス ベンチマークでどのようにトレーニングされたか、Hugging Face プラットフォームを使用した実際の実装など、その核心的な側面を詳しく掘り下げていきます。さらに、このモデルを無料の Google Colab 上で実行し、その数学と推論能力をテストします。

タイニーラマ 1.1B

学習目標

  • TinyLlama 1.1B について包括的に理解する
  • モデルが経験した複雑なトレーニング プロセスを調査する
  • パフォーマンスとベンチマーク結果を分析して、その有効性を評価します
  • コーディング例を使用して、TinyLlama 1.1B を実装する実践的な手順を学びます。

この記事は、の一部として公開されました データサイエンスブログ。

目次

TinyLlama 1.1B とは何ですか?

TinyLlama 1.1B は、より広範な Llama プロジェクトの一部であり、言語モデリングの進歩の証です。これは 1.1 億のパラメーターを備え、3 兆という驚異的なトークンでトレーニングされたモデルであり、AI 環境において独自の地位を占めています。より大きな対応物とは異なり、TinyLlama 1.1B はより効率的で管理しやすいように設計されており、計算リソースが限られているアプリケーションに適しています。

このオープンソース モデルにより、最先端の AI テクノロジーへのアクセスが民主化され、多くの開発者や研究者が自然言語処理の分野で探索および革新できるようになります。これは、今日の多様なコンピューティング環境において重要な考慮事項である、パフォーマンスとリソース消費のバランスをとる能力で知られるモデルです。

TinyLlama 1.1Bのトレーニングプロセス

TinyLlama 1.1B のトレーニング プロセスは、モデル自体と同様に魅力的です。 TinyLlama のトレーニングは 90 日間だけ行われ、16 個の A100-40G GPU でトレーニングされました。事前トレーニングは 3 兆トークンで行われ、TinyLlama チームは各 XNUMX 兆トークン間の中間モデルを公開しました。 

データに関しては、Slimpajama と Starcoderdata は合計 950 億トークンのデータセット サイズで取得されました。自然言語とコードの比率は 7:3 に維持されました。つまり、データの 70% が自然言語で、30% がコードでした。したがって、微調整のための 3 兆トークンのマークを達成するために、TinyLlama はこのデータセットに対して 3 エポックのトレーニングを受けました。 

TinyLlama-Chat と呼ばれる TinyLlama のチャット バージョンもリリースされています。当初、このモデルは、ChatGPT によって生成されたさまざまな合成会話を含む UltraChat データセットで微調整されました。このステップは、さまざまな会話のコンテキストやスタイルを処理できるモデルを作成する上で重要でした。

UltraFeedback データセットの DPOTrainer を使用して、さらなる改良が達成されました。このトレーニング フェーズでは、人間のような会話パターンに合わせてモデルの応答を調整することに重点を置きました。その結果、さまざまなトピックに関する情報を把握するだけでなく、自然で魅力的な方法で対話するモデルが生まれました。

また読むことができます: LlaMA 2 入門: 初心者ガイド

パフォーマンスとベンチマークの結果

TinyLlama 1.1B のパフォーマンスを評価すると、高品質の応答を迅速に提供できることがわかります。そのトレーニングにより、多言語アプリケーションに対応できる能力が身に付きました。これは、グローバル化した世界において重要な機能です。 TinyLlama 1.1B は、サイズが小さいにもかかわらず、応答品質と速度に関しては依然として大型の製品に追いつき、さまざまな AI アプリケーションで強力なツールとなっています。

TinyLlama 1.1B のベンチマークは、大規模モデルのベンチマークほど広範囲ではありませんが、複雑な言語タスクの処理における熟練度を示しています。複数の言語で一貫性と文脈に関連した応答を生成する能力は特に印象的です。モデルは、HellaSwag、WinoGrande、ARC、MMLU などのさまざまなベンチマークでテストされました。合計の平均スコアは 52.99 でした。これは、平均スコア 1 を達成した他の 1 億パラメータ モデル、つまり Pythia 48.3B よりもはるかに優れています。この表は、各ベンチマークの個別のスコアを示しています。

ベンチマーク TinyLlama 1.1B スコア
ヘラスワッグ 59.2
オブカ 36.0
ウィノグランデ 59.12
ARC_c 30.12
ARC_e 55.25
ブールク 57.83
ピカ 73.29
平均 52.9

TinyLlama – はじめに

このセクションでは、TinyLlama Chat の量子化バージョンをダウンロードし、Google Colab で実行します。モデルをダウンロードする前に、次の Python パッケージをダウンロードしてインストールする必要があります。

!CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip3 install llama-cpp-python 
!pip3 install huggingface-hub 
  •   CMAKE_ARGS=”-DLLAMA_CUBLAS=オン” および FORCE_CMAKE=1を使用すると、llama_cpp_python が無料の colab バージョンで利用可能な Nvidia GPU を利用できるようになります。
  • 次に、 ラマ_cpp_python pip3 経由でパッケージ化する
  • ダウンロードもします ハグフェイスハブ、量子化された TinyLlama 1.1B Chat をダウンロードします。

TinyLlama 1.1B チャット モデルをテストするには、まず量子化されたバージョンをダウンロードする必要があります。ダウンロードするには、次のコードを実行します。

from huggingface_hub import hf_hub_download

# specifying the model name
model_name = "TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF"
# specifying the type of quantization of the model
model_file = "tinyllama-1.1b-chat-v1.0.Q8_0.gguf"

# download the model by specifying the model name and quantized model name
model_path = hf_hub_download(model_name, filename=model_file)

ここで、 ハグ_フェイス_ハブ ライブラリは量子化モデルをダウンロードするプロセスを処理します。このために、 hf_hub_download これは次のパラメータを受け取ります。

  • モデル名: この変数に、ダウンロードしたいモデルを渡します。ここでは、TinyLlama 1.1B Chat GGUF モデルをダウンロードします。
  • モデルファイル: ここでは、ダウンロードする量子化モデルのタイプを指定します。ここでは、TinyLlama 8B Chat の 1.1 ビット量子化バージョンをダウンロードします。
  • 最後に、これらのパラメータを hf_hub_download、これらのパラメーターを受け取り、指定されたモデルをダウンロードします。ダウンロード後、モデルがダウンロードされたパスを返します。
  • 返されたこのパスは、 モデルパス 変数に保存します.

これで、このモデルを次の方法でロードできます。 ラマ_cpp_python 図書館。モデルをロードするコードは以下のようになります。

from llama_cpp import Llama
llm = Llama(
    model_path=model_path,
    n_ctx=512,  # the number of i/p tokens the model can take
    n_threads=8, # the number of threads to use
    n_gpu_layers=40# how many layers of the model to offload to the GPU
)

私たちが輸入するのは、 ラマ からのクラス ラマ_cpp、次のパラメータを受け取ります

  • モデルパス: この変数は、モデルが保存されているパスを受け取ります。前のステップでパスを取得したので、それをここで提供します。
  • n_ctx: ここで、モデルのコンテキストの長さを指定します。現時点では、コンテキストの長さとして 512 トークンを提供しています。
  • n_スレッド: ここで、によって使用されるスレッドの数について言及します。 ラマ class
  • n_gpu_layers: 実行中の GPU がある場合はこれを指定します。無料の colab の場合はこれを指定します。これには 40 を渡します。これは、モデル全体を GPU にオフロードし、その一部をシステム RAM で実行したくないことを意味します。
  • 最後に、これからオブジェクトを作成します ラマ クラスを作成し、それを変数llmに渡します

このコードを実行すると、TinyLlama 1.1B Chat 量子化モデルが GPU にロードされ、適切なコンテキスト長が設定されます。ここで、このモデルに対していくつかの推論を実行します。このために、以下のコードを使用します

output = llm(
  "<|im_start|>usernWho are you?<|im_end|>n<|im_start|>assistantn", # User Prompt
  max_tokens=512,  # Number of output tokens generated
  stop=["</s>"],   # Token which tells the LLM to stop
)
print(output['choices'][0]['text']) # Model generated text

モデルを推論するには、次のパラメータを LLM に渡します。

  • プロンプト/チャット テンプレート: これは、モデルとチャットするために必要なプロンプト テンプレートです。上記テンプレート(つまり、 ) は、TinyLlama 1.1B チャット モデルで機能するものです。テンプレートでは、User の後の文が User Prompt であり、Assistant の後に生成されます。
  • max_tokens: この変数には、プロンプトが表示されたときに大規模言語モデルが出力できるトークンの最大数を定義する値を渡します。現時点では、トークンを 512 個に制限しています。
  • やめる: この変数に停止トークンを渡します。停止トークンは、大規模言語モデルにさらなるトークンの生成を停止するように指示します。 TinyLlama 1.1B チャットの場合、停止トークンは次のとおりです。

これを実行すると、生成されたテキストが出力変数に保存されます。結果は、OpenAI API 呼び出しと同様の形式で生成されます。したがって、OpenAI 応答から世代にアクセスする方法と同様に、指定された print ステートメントを通じて世代にアクセスできます。生成された出力は以下で確認できます。

タイニーラマ 1.1B

このサイズのモデルとしては、生成されるレスポンスは最高のものです。このサイズのモデルではこれは予想外です。文法も口調も全く問題なく、文を繰り返した形跡もありません。モデルの推論機能をテストしてみましょう

output = llm(
  "<|im_start|>usernIf all students who study hard get good grades, 
  and John got good grades, can we conclude that John studied hard?
  <|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
タイニーラマ 1.1B
output = llm(
  "<|im_start|>usernHow fast can a snake fly?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"

ここまでは順調ですね。これまで見てきた例から、モデルは適切な答えを生成します。ただし、限られた数の質問に対してのみテストするため、これがすべての場合に当てはまるわけではありません。モデルの数学的推論機能をテストしてみましょう

output = llm(
  "<|im_start|>usernJohn is twice as old as Sarah, and Sarah is three years 
  older than Mary. If Mary is 10 years old, how old is John?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"
output = llm(
  "<|im_start|>usernWhat is the missing number in this pattern: 
  1, 4, 9, 16, __, 36?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"

これまで見てきた例から、TinyLlamaChat は数学における単純な適性の質問に答える能力が非常に低いことは明らかです。モデルが数学データセットで事前トレーニングされていないため、これは想定内のことです。生成の品質は、数学データセットで微調整することで改善できます。

微調整に関して言えば、TinyLlama は、ハードウェアが限られていて、特定のデータセットで大規模な言語モデルを微調整したい人にとって頼りになる選択肢です。

潜在的なユースケースとアプリケーション

コンパクトなサイズを考えると、 タイニーラマは 1.1 億のパラメータを誇りますが、そのアプリケーションは主に、ハードウェアの制限や効率の向上により、より大きなモデルが実現できない環境に適しています。サイズを考慮した具体的な使用例をいくつか示します。

モバイルアプリケーション: TinyLlama はサイズが小さいため、デバイス上での処理が必要なモバイル アプリに統合するのに適しています。これには、言語翻訳アプリ、パーソナル アシスタント機能、スマートフォン上で効率的に動作できるチャットボットが含まれます。

IoT デバイスの組み込みシステム: モノのインターネット (IoT) 分野では、コンピューティング リソースが限られていることがよくあります。 TinyLlama を使用すると、スマート ホーム アシスタント、ウェアラブル技術、その他の接続機器などのさまざまな機器にインテリジェントな言語処理機能を追加できます。

エッジコンピューティング: 集中化されたクラウド環境ではなく、ソースに近い場所でデータを処理することでメリットが得られるアプリケーションの場合、TinyLlama を効果的に使用できます。これには、自動車システム、製造装置、その他のエッジ デバイスにおけるリアルタイム言語処理が含まれます。

低リソース言語の研究: TinyLlama は、サイズが小さく、計算要件が低いため、言語研究、特に大規模なモデルのトレーニングが不可能なリソース不足の言語の研究において貴重なツールとなり得ます。

教育ツール: 教育現場、特にハイエンド コンピューティング リソースへのアクセスが制限されている教育現場では、TinyLlama を使用して言語学習アプリ、インタラクティブな教育ツール、その他の学習支援ツールを開発できます。

中小企業向けのコンテンツ生成: リソースが限られている中小企業は、大規模なコンピューティング能力を必要とせずに、TinyLlama を使用して製品説明、マーケティング コピー、顧客対応などのコンテンツを生成できます。

プロトタイピングと実験: 言語モデルを試したいが高性能のコンピューティング リソースにアクセスできない開発者や研究者は、TinyLlama を使用して新しい NLP アプリケーションのプロトタイプを作成し、開発できます。

効率的なデータ分析: TinyLlama は、顧客のフィードバック、アンケートの回答、ソーシャル メディアでのやり取りの分析など、迅速かつ効率的な処理が必要なシナリオでのテキスト分析とデータ抽出に使用できます。

まとめ

TinyLlama 1.1B は、AI と自然言語処理の分野における進歩の証です。その開発と広く利用できることは、より効率的で小規模で迅速な推論言語モデルを作成するために不可欠です。 TinyLlama 1.1B は、より小さいパラメータ フットプリントと堅牢なパフォーマンスのバランスをとることで、幅広いアプリケーション向けの強力で実用的なモデルに対する重要なニーズに応えます。人間のような方法で言語を理解し、生成する機能を備えながら、さまざまなコンピューティング環境に十分対応できる軽さがあるため、マシン上で大規模言語モデルを実行するのに苦労している人にとって頼りになる選択肢となります。モデルはデータセット上で簡単に微調整でき、限られたコンピューティング リソースでトレーニングできます。 

この記事の重要なポイントは次のとおりです。

  • 効率性を重視して設計された TinyLlama 1.1B は、計算リソースが限られているユーザーを含む幅広いユーザーが利用できるため、いくつかのアプリケーションに適しています。
  • このモデルは、3 個の A90-16G GPU を使用した 100 日間にわたる 40 兆トークンのトレーニングを含む、広範なトレーニング プロセスを経ました。
  • TinyLlama 1.1B は、サイズが小さいにもかかわらず、高品質で文脈に応じた応答を複数の言語で提供するため、検討すべきモデルとなっています。
  • モバイル アプリケーション、IoT 機器、教育ツールなどに適しており、コンパクトなサイズと効率により幅広い用途に使用できます。
  • 計算要件が低いため、言語研究、特にリソースが不足している言語の研究において貴重なツールとなります。
  • このモデルは、主に計算能力が限られている環境で、言語モデルを実験したり、新しい NLP アプリを開発したりする人に適しています。

よくある質問

Q1 TinyLlama 1.1B とは何ですか?

A. TinyLlama 1.1B は、1.1 兆のトークンでトレーニングされた 3 億のパラメータを備えたコンパクトで効率的な大規模言語モデルであり、計算リソースが限られたアプリケーションに適しています。

Q2 TinyLlama 1.1B はどのようにトレーニングされましたか?

A. Slimpajama や Starcoderdata を含むデータセット上で 90 台の A16-100G GPU を使用し、自然言語とコードの比率 40:7 で 3 日間にわたってトレーニングされました。

Q3 TinyLlama 1.1B のパフォーマンス ベンチマークは何ですか?

A. TinyLlama 1.1B は、複雑な言語タスクを処理するスキルを示し、HellaSwag、MMLU、WinoGrande などのベンチマーク全体で平均 52.99 点を獲得しました。

Q4 TinyLlama 1.1B の潜在的な使用例にはどのようなものがありますか?

A. サイズと速度が重要な問題となるアプリケーションに適しています。これらには、モバイル アプリ、ホーム オートメーション デバイスなどの IoT 機器、中小企業向けのコンテンツ生成、効率的なデータ分析が含まれます。

Q5 TinyLlama 1.1B はリソースが限られている開発者に適していますか?

A. 新しい NLP アプリケーションのプロトタイピングや開発のための高性能コンピューティング リソースにアクセスできない開発者や研究者にとって、これは間違いなく完璧な選択肢です。 TinyLlama モデルは Raspberry Pi マシンでも実行できます。

Q6 TinyLlama 1.1B は数学的推論タスクでどのように機能しますか?

A. さまざまな言語タスクでは非常に優れていますが、数学的推論には限界があり、関連するデータセットを微調整することで改善できます。

この記事に示されているメディアは Analytics Vidhya が所有するものではなく、著者の裁量で使用されています。

タイムスタンプ:

より多くの 分析Vidhya