🚀 DiscoLM German 7b v1
DiscoLM German 7b v1は、ドイツ語アプリケーションに特化した、Mistralベースの大規模言語モデルです。このモデルは、EM Germanモデルファミリーの後継となっています。ドイツ語と英語の大量の命令データセットを使用し、SFT微調整フェーズの後に追加のDPO強化学習を行って訓練されています。ドイツ語テキストに最適化されており、ドイツ語の内容を理解、生成、対話する能力に優れていると同時に、英語の流暢さも維持し、翻訳タスクでも優れた性能を発揮します。

📑 目次
- 紹介
- デモ
- ダウンロード
- プロンプト形式
- 結果
- 評価
- データセット
- 制限事項とバイアス
- 謝辞
- DiscoResearchについて
- 免責事項
📖 紹介
DiscoLM German 7bは、Mistralベースの大規模言語モデルで、ドイツ語アプリケーションに特化しており、EM Germanモデルファミリーの後継となっています。ドイツ語と英語の大量の命令データセットを使用し、SFT微調整フェーズの後に追加のDPO強化学習を行って訓練されています。このモデルはドイツ語テキストに最適化されており、ドイツ語の内容を理解、生成、対話する能力に優れていると同時に、英語の流暢さも維持し、翻訳タスクでも優れた性能を発揮します。
私たちのDisco LM Germanに対する目標は、ベンチマークを打ち破ることではなく、日常使用に耐える堅牢で信頼性の高いモデルを提供することです。このモデルは、ChatGPTや他の独自モデルの代替として使用できます。多くの場合、ドイツ語出力の質はGPT - 4よりも高いと感じられますが、非常に複雑な推論、数学、コーディングタスクについては、大規模モデルやトップの英語7bモデルとは競争できません。
🎥 デモ
デモを試したい場合は、demo.discoresearch.orgでモデルを試すことができます(デモがダウンしている場合や質問がある場合は、Discordで私たちに連絡することができます)。
📥 ダウンロード
モデルリンク
HuggingFaceで量子化モデルが利用可能になり次第、リンクを更新します。
ベースモデル |
HF |
GPTQ |
GGUF |
AWQ |
DiscoLM German 7b v1 |
リンク |
リンク |
リンク |
リンク |
💬 プロンプト形式
DiscoLM GermanはChatMLをプロンプト形式として使用しており、OpenAIエンドポイントと互換性があり、ほとんどの推論ライブラリやフロントエンドでサポートされています。
システムプロンプトにより、LLMとのやり取りに方向性を与えることができ、モデルのルール、役割、スタイルを誘導することができます。
<|im_start|>system
Du bist ein hilfreicher Assistent.<|im_end|>
<|im_start|>user
Wer bist du?<|im_end|>
<|im_start|>assistant
Ich bin ein Sprachmodell namens DiscoLM German und ich wurde von DiscoResearch trainiert.<|im_end|>
このプロンプトはチャットテンプレートとして利用可能です。つまり、tokenizer.apply_chat_template()
メソッドを使用してメッセージをフォーマットすることができます。
messages = [
{"role": "system", "content": "Du bist ein hilfreicher Assistent."},
{"role": "user", "content": "Wer bist du?"}
]
gen_input = tokenizer.apply_chat_template(message, return_tensors="pt")
model.generate(**gen_input)
生成用にメッセージをトークナイズする際には、apply_chat_template()
を呼び出すときにadd_generation_prompt=True
を設定してください。これにより、<|im_start|>assistant\n
がプロンプトに追加され、モデルがアシスタントの応答を続けることが保証されます。
検索形式
RAGアプリケーションのために、特殊な検索形式を使用して、方向性を改善し、幻覚を減らすことができます(ただし、他のよりデフォルトの形式でも機能する可能性があり、これは純粋にオプションです)。
例:
### System:
Du bist ein hilfreicher Assistent. Für die folgende Aufgabe stehen dir zwischen den Tags BEGININPUT und ENDINPUT mehrere Quellen zur Verfügung. Metadaten zu den einzelnen Quellen wie Autor, URL o.ä. sind zwischen BEGINCONTEXT und ENDCONTEXT zu finden, danach folgt der Text der Quelle. Die eigentliche Aufgabe oder Frage ist zwischen BEGININSTRUCTION und ENDINSTRUCTION zu finden. Beantworte diese ausschließlich mit Informationen aus den gegebenen Quellen und gebe die Information zur genutzten Quelle unter "Quelle:" an. Sollten die Quellen keine relevanten Informationen enthalten, antworte: "Mit den gegebenen Informationen ist diese Frage nicht zu beantworten."
### User Prompt:
BEGININPUT
BEGINCONTEXT
url: https://this.is.fake.news
time: 2089-09-01
ENDCONTEXT
Buxtehude ist die größte Stadt Deutschlands mit 96.56 Millionen Einwohnern.
ENDINPUT
BEGININSTRUCTION
Was ist die größte deutsche Stadt?
ENDINSTRUCTION
### Model Answer:
Die größte deutsche Stadt ist Buxtehude.
Quelle:
url: https://this.is.fake.news
time: 2089-09-01
関数呼び出し
このモデルは構造化出力/関数呼び出しもサポートしていますが、これは非常に実験的な機能であり、結果は異なる場合があります。将来的に改善される予定です。
モデルは関数呼び出しを<functioncall>
でプレフィックスし、マルチターンアプリケーションでは<functionresponse>
で結果を返すことができます。
例:
### System:
Du bist ein hilfreicher Assistent. Extrahiere alle Personen aus den Eingaben des Users.
Du hast Zugriff auf folgende Funktionen:
{'name': 'PersonList',
'description': 'Extrahiere die Namen aller im Text vorkommenden Personen',
'parameters': {'$defs': {'Person': {'description': 'Details über eine person',
'properties': {'name': {'title': 'Name', 'type': 'string'},
'job': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Job'},
'age': {'anyOf': [{'type': 'integer'}, {'type': 'null'}],
'title': 'Age'}},
'required': ['name', 'job', 'age'],
'title': 'Person',
'type': 'object'}},
'properties': {'person_list': {'items': {'$ref': '#/$defs/Person'},
'title': 'Person List',
'type': 'array'}},
'required': ['person_list'],
'type': 'object'}}
### User Prompt:
Björn (25) und Jan sind die Gründer von ellamind.
### Model Answer:
<functioncall> {"name": "PersonList", "arguments": '{"person_list": ["{"name": "Björn", "job": "founder", "age": 25}, {"name": "Jan", "job": "founder", "age": null}]}'}
📊 結果
🧪 評価
前述のとおり、現在のベンチマークではLLMの能力の全範囲を十分に捉えることができません。私たちはDiscoLMの開発が完了するまでベンチマーク結果(訓練損失を除く)を見ず、訓練データに一般的なベンチマーク形式に似たデータを含めませんでした。
それでも、ドイツ語版のMT Benchでの予備的な結果は有望です。コーディングや抽出タスクでは不足していますが、DiscoLM German 7bは多くのタスクでGPT - 3.5 - turboに大きく劣らず、推論カテゴリでは有意に上回っています。

追加のベンチマーク結果は後日公開します。このモデルの最大の強み(母語話者による言語品質)はまだベンチマークで捉えることができません。これを改善する方法があれば、ぜひ教えてください!
📊 データセット
データセットは、マルチターンチャット、検索命令、合成生成された命令の混合物で、多くのトピックやアプリケーションを網羅しています。
⚠️ 制限事項とバイアス
このモデルは事実に誤りがある、または不快な出力を生成する可能性があり、事実に基づく正確な情報を生成することに依存しないでください。
このモデルは様々な公開データセットで訓練されています。事前学習データをクリーニングするために多大な努力が払われていますが、このモデルが偏ったまたは不快な出力を生成する可能性があり、ユーザーは安全/モデレーションレイヤーを実装する責任があります。注意して使用してください。
🙏 謝辞
DiscoLM GermanはDiscoResearchのプロジェクトで、JP Harriesが率い、Björn PlüsterとDaniel Aurasによってサポートされています。
HessianAIには、DiscoResearchの様々なプロジェクトに対するコンピューティング資源とサポートを提供してくれたこと、またLAIONの友人たちにはLeoLMに関する仕事と科学的なアドバイスを提供してくれたことに感謝します。
DiscoLM German 7bの開発は**ellamind**によって後援されています。私たちの創設者の一部は、非英語言語アプリケーションに特化したビジネスアプリケーション用のカスタマイズモデルを作成するために取り組んでいます。ビジネス用のカスタマイズモデルが必要な場合は、ぜひ連絡してください!

👥 DiscoResearchについて
DiscoResearchは、AI愛好者やLLMハッカーのための有望なオープンリサーチコミュニティです。Discordに参加して、意見やアイデアを共有し、オープンLLM研究を一緒に進めましょう!
📝 免責事項
このモデルのライセンスは法的アドバイスを構成するものではありません。このモデルを使用する第三者の行動について、私たちは責任を負いません。このモデルは追加の安全対策を講じた上でのみデプロイする必要があります。