モデル概要
モデル特徴
モデル能力
使用事例
🚀 dolly-v2-3b モデルカード
Databricksのdolly-v2-3b
は、Databricksの機械学習プラットフォームで学習された命令追従型の大規模言語モデルで、商用利用が許可されています。pythia-2.8b
をベースに、Databricksの社員によって生成された約15kの命令/応答の微調整レコードdatabricks-dolly-15k
を使用して学習されています。これらのレコードは、InstructGPT論文の能力領域、すなわちブレインストーミング、分類、クローズドQA、生成、情報抽出、オープンQA、要約などに関するものです。dolly-v2-3b
は最先端のモデルではありませんが、ベースとなるモデルには見られない、驚くほど高品質な命令追従動作を示します。
Dolly v2は、以下のような大規模なモデルサイズでも利用可能です。
- dolly-v2-12b:
pythia-12b
をベースにした120億パラメータのモデル - dolly-v2-7b:
pythia-6.9b
をベースにした69億パラメータのモデル
さまざまなGPU構成で推論を実行するためのヒントについては、dolly GitHubリポジトリを参照してください。
所有者:Databricks, Inc.
🚀 クイックスタート
モデル概要
dolly-v2-3b
は、Databricksによって作成された28億パラメータの因果言語モデルで、EleutherAIのPythia-2.8bをベースに、Databricksの社員によって生成され、許容的なライセンス(CC-BY-SA)で公開された約15Kのレコードの命令コーパスを使用して微調整されています。
モデルの使用方法
GPUを搭載したマシンでtransformers
ライブラリを使用してモデルを利用するには、まずtransformers
とaccelerate
ライブラリをインストールする必要があります。Databricksノートブックでは、以下のコマンドを実行できます。
%pip install "accelerate>=0.16.0,<1" "transformers[torch]>=4.28.1,<5" "torch>=1.13.1,<2"
命令追従パイプラインは、以下に示すようにpipeline
関数を使用してロードできます。これは、モデルリポジトリのこの場所にあるカスタムのInstructionTextGenerationPipeline
をロードするため、trust_remote_code=True
が必要です。torch_dtype=torch.bfloat16
を指定すると、この型がサポートされている場合、メモリ使用量を削減できるため、一般的に推奨されます。出力品質には影響しないようです。メモリが十分にある場合は、この指定を削除しても構いません。
import torch
from transformers import pipeline
generate_text = pipeline(model="databricks/dolly-v2-3b", torch_dtype=torch.bfloat16, trust_remote_code=True, device_map="auto")
次に、パイプラインを使用して命令に応答することができます。
res = generate_text("Explain to me the difference between nuclear fission and fusion.")
print(res[0]["generated_text"])
あるいは、trust_remote_code=True
を使用しない場合は、instruct_pipeline.pyをダウンロードし、ノートブックと同じディレクトリに保存し、ロードしたモデルとトークナイザーから自分でパイプラインを構築することができます。
import torch
from instruct_pipeline import InstructionTextGenerationPipeline
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("databricks/dolly-v2-3b", padding_side="left")
model = AutoModelForCausalLM.from_pretrained("databricks/dolly-v2-3b", device_map="auto", torch_dtype=torch.bfloat16)
generate_text = InstructionTextGenerationPipeline(model=model, tokenizer=tokenizer)
LangChainでの使用方法
LangChainでパイプラインを使用するには、return_full_text=True
を設定する必要があります。LangChainは全文を返すことを期待しており、パイプラインのデフォルトは新しいテキストのみを返すためです。
import torch
from transformers import pipeline
generate_text = pipeline(model="databricks/dolly-v2-3b", torch_dtype=torch.bfloat16,
trust_remote_code=True, device_map="auto", return_full_text=True)
命令のみを含むプロンプト、またはコンテキスト付きの命令を含むプロンプトを作成することができます。
from langchain import PromptTemplate, LLMChain
from langchain.llms import HuggingFacePipeline
# 入力がない命令のテンプレート
prompt = PromptTemplate(
input_variables=["instruction"],
template="{instruction}")
# 入力付きの命令のテンプレート
prompt_with_context = PromptTemplate(
input_variables=["instruction", "context"],
template="{instruction}\n\nInput:\n{context}")
hf_pipeline = HuggingFacePipeline(pipeline=generate_text)
llm_chain = LLMChain(llm=hf_pipeline, prompt=prompt)
llm_context_chain = LLMChain(llm=hf_pipeline, prompt=prompt_with_context)
単純な命令を使用した予測の例:
print(llm_chain.predict(instruction="Explain to me the difference between nuclear fission and fusion.").lstrip())
コンテキスト付きの命令を使用した予測の例:
context = """George Washington (February 22, 1732[b] - December 14, 1799) was an American military officer, statesman,
and Founding Father who served as the first president of the United States from 1789 to 1797."""
print(llm_context_chain.predict(instruction="When was George Washington president?", context=context).lstrip())
🔧 技術詳細
既知の制限事項
性能の制限
dolly-v2-3b
は最先端の生成型言語モデルではありません。定量的なベンチマークテストは進行中ですが、より最新のモデルアーキテクチャや大規模な事前学習コーパスを使用したモデルと競争するように設計されていません。
Dollyモデルファミリーは積極的に開発中であり、欠点のリストは網羅的であるとは限りません。ただし、既知の制限事項と誤動作については、ここに記載し、コミュニティと共有することで、初期の調査結果を文書化しています。特に、dolly-v2-3b
は、構文が複雑なプロンプト、プログラミング問題、数学演算、事実誤り、日付と時刻、オープンエンドの質問応答、幻覚、特定の長さのリストの列挙、スタイルの模倣、ユーモアの理解などに苦労します。さらに、dolly-v2-3b
には、元のモデルにあった、形式が整った手紙の作成などの機能がないことがわかっています。
データセットの制限
すべての言語モデルと同様に、dolly-v2-3b
は学習コーパスの内容と制限を反映しています。
-
The Pile:GPT-Jの事前学習コーパスは、主に公開インターネットから収集された内容を含んでおり、ほとんどのウェブスケールのデータセットと同様に、多くのユーザーが不快感を感じる内容が含まれています。したがって、このモデルはこれらの欠点を反映する可能性があり、不快な内容を明示的に生成するように要求された場合には明らかに現れ、偏見や有害な暗黙的な関連付けの場合には微妙に現れることがあります。
-
databricks-dolly-15k
:dolly-v2-3b
が命令微調整に使用する学習データは、2023年3月から4月にかけてDatabricksの社員によって生成された自然言語命令を表しており、クローズドQAや要約などの命令カテゴリの参照パッセージとしてWikipediaのパッセージが含まれています。私たちの知る限り、このデータセットには不適切な表現、知的財産、非公開人物の個人情報は含まれていませんが、タイポや事実誤りが含まれている可能性があります。また、このデータセットはWikipediaに見られる偏見を反映している可能性もあります。最後に、このデータセットは、世界人口全体を代表していないDatabricksの社員の興味と語義的な選択を反映している可能性があります。
Databricksは、すべての個人と組織の可能性を最大限に引き出す、役立ち、正直、無害なAI技術の開発に向けた継続的な研究開発努力に取り組んでいます。
ベンチマーク指標
以下に、EleutherAI LLM Evaluation Harnessでのさまざまなモデルのベンチマーク性能を示します。モデルの結果は、幾何平均でソートされており、わかりやすい順序になっています。上述のとおり、これらの結果は、dolly-v2-3b
が最先端ではないことを示しています。評価ベンチマークでは、dolly-v1-6b
よりも性能が劣っていますが、パラメータ数が半分であることを考えると、これは驚くことではありません。
モデル | openbookqa | arc_easy | winogrande | hellaswag | arc_challenge | piqa | boolq | gmean |
---|---|---|---|---|---|---|---|---|
EleutherAI/pythia-2.8b | 0.348 | 0.585859 | 0.589582 | 0.591217 | 0.323379 | 0.73395 | 0.638226 | 0.523431 |
EleutherAI/pythia-6.9b | 0.368 | 0.604798 | 0.608524 | 0.631548 | 0.343857 | 0.761153 | 0.6263 | 0.543567 |
databricks/dolly-v2-3b | 0.384 | 0.611532 | 0.589582 | 0.650767 | 0.370307 | 0.742655 | 0.575535 | 0.544886 |
EleutherAI/pythia-12b | 0.364 | 0.627104 | 0.636148 | 0.668094 | 0.346416 | 0.760065 | 0.673394 | 0.559676 |
EleutherAI/gpt-j-6B | 0.382 | 0.621633 | 0.651144 | 0.662617 | 0.363481 | 0.761153 | 0.655963 | 0.565936 |
databricks/dolly-v2-12b | 0.408 | 0.63931 | 0.616417 | 0.707927 | 0.388225 | 0.757889 | 0.568196 | 0.56781 |
databricks/dolly-v2-7b | 0.392 | 0.633838 | 0.607735 | 0.686517 | 0.406997 | 0.750816 | 0.644037 | 0.573487 |
databricks/dolly-v1-6b | 0.41 | 0.62963 | 0.643252 | 0.676758 | 0.384812 | 0.773667 | 0.687768 | 0.583431 |
EleutherAI/gpt-neox-20b | 0.402 | 0.683923 | 0.656669 | 0.7142 | 0.408703 | 0.784004 | 0.695413 | 0.602236 |
📄 ライセンス
このモデルはMITライセンスの下で提供されています。
📚 引用
@online{DatabricksBlog2023DollyV2,
author = {Mike Conover and Matt Hayes and Ankit Mathur and Jianwei Xie and Jun Wan and Sam Shah and Ali Ghodsi and Patrick Wendell and Matei Zaharia and Reynold Xin},
title = {Free Dolly: Introducing the World's First Truly Open Instruction-Tuned LLM},
year = {2023},
url = {https://www.databricks.com/blog/2023/04/12/dolly-first-open-commercially-viable-instruction-tuned-llm},
urldate = {2023-06-30}
}
😊 ハッキングを楽しんで!



