Lingowhale 8B
モデル概要
モデル特徴
モデル能力
使用事例
🚀 語鯨-8B (LingoWhale-8B)
語鯨-8Bは深言科技が提供する中英バイリンガルの大規模言語モデルです。このモデルは数兆のトークンを持つ高品質な中英データで事前学習され、多くの公開評価ベンチマークで優れた性能を発揮します。また、学術研究に完全に開放されており、商用許可を取得すれば無料で商用利用することができます。
🚀 クイックスタート
モデルのダウンロード
以下のリンクからモデルをダウンロードできます。
- 🚀 Github Repo
- 🤖 ModelScope
- ⛵ Wisemodel
依存関係のインストール
pip install -r requirements.txt
- flash attentionを使用する場合は、flash-attnをインストールする必要があります。
- LoRAなどの少パラメータ微調整方法を使用する場合は、peftを追加でインストールする必要があります。
Pythonサンプルコード
>>> from transformers import AutoModelForCausalLM, AutoTokenizer
>>> tokenizer = AutoTokenizer.from_pretrained("deeplang-ai/LingoWhale-8B", trust_remote_code=True)
>>> model = AutoModelForCausalLM.from_pretrained("deeplang-ai/LingoWhale-8B", device_map="auto", trust_remote_code=True)
>>> inputs = tokenizer("陋室铭\n唐 刘禹锡\n", return_tensors="pt")
>>> inputs = inputs.to("cuda:0")
>>> pred = model.generate(**inputs, max_new_tokens=100, repetition_penalty=1.1)
>>> print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))
✨ 主な機能
- 中英バイリンガル対応:高品質な中英データで事前学習され、中英両言語でのテキスト生成が可能です。
- 強力な基礎能力:多くの公開評価ベンチマークで優れた性能を発揮し、長文脈の理解と生成タスクも処理できます。
- 学術研究と商用の両立:学術研究に完全に開放されており、商用許可を取得すれば無料で商用利用することができます。
- 使いやすいインターフェース:Huggingfaceの推論インターフェースとLoRAなどのパラメータ効率的な微調整例を提供し、開発者が迅速にモデルを使用できるようにしています。
📦 インストール
依存関係のインストール方法は以下の通りです。
pip install -r requirements.txt
- flash attentionを使用する場合は、flash-attnをインストールする必要があります。
- LoRAなどの少パラメータ微調整方法を使用する場合は、peftを追加でインストールする必要があります。
💻 使用例
基本的な使用法
>>> from transformers import AutoModelForCausalLM, AutoTokenizer
>>> tokenizer = AutoTokenizer.from_pretrained("deeplang-ai/LingoWhale-8B", trust_remote_code=True)
>>> model = AutoModelForCausalLM.from_pretrained("deeplang-ai/LingoWhale-8B", device_map="auto", trust_remote_code=True)
>>> inputs = tokenizer("陋室铭\n唐 刘禹锡\n", return_tensors="pt")
>>> inputs = inputs.to("cuda:0")
>>> pred = model.generate(**inputs, max_new_tokens=100, repetition_penalty=1.1)
>>> print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))
高度な使用法
# 高度なシナリオでの使用例
# 例えば、特定のタスクに対する微調整や、ハイパーパラメータの調整など
📚 ドキュメント
モデルの詳細
語鯨-8Bは深言科技が提供する中英バイリンガルの大規模言語モデルです。このモデルは数兆のトークンを持つ高品質な中英データで事前学習され、多くの公開評価ベンチマークで優れた性能を発揮します。また、事前学習段階では8Kのコンテキスト長で学習されており、長文脈の理解と生成タスクも処理できます。
評価結果
以下の公開評価ベンチマークでテストを行いました。
評価ベンチマーク | 説明 |
---|---|
C-Eval | 中国語の基礎モデル評価ベンチマークで、13948の選択問題を含み、52の異なる学科と4つの難易度レベルをカバーしています。 |
MMLU | 英語の基礎モデル評価ベンチマークで、基本数学、米国史、コンピュータサイエンス、法律などの複数の分野をカバーし、合計57のタスクが含まれています。 |
CMMLU | 中国語の評価ベンチマークで、基礎学科から高度な専門レベルまでの67のトピックをカバーしています。 |
Gaokao | 中国の大学入試問題をデータセットとした評価ベンチマークで、中国語の言語理解能力と論理推理能力を評価するために設計されています。 |
HumanEval | 数百のプログラミング問題を含む英語の評価ベンチマークで、言語モデルのプログラム理解と生成能力を評価するために使用されます。 |
GSM8K | 高品質で言語が多様な小学校の数学応用問題から構成されるデータセットで、与えられたシナリオに基づいて最適な解決策を選択する能力を評価するために使用されます。 |
BBH | 204のBig-Bench評価ベンチマークタスクの中から性能が低いタスクを選択して作成された評価ベンチマークで、大規模言語モデルの挑戦的なタスクでの性能を評価するために使用されます。 |
AGIEval | 基礎モデルの人間的能力を評価するベンチマークテストで、人間の認知と問題解決に関連するタスクでのモデルの能力を評価するために使用されます。 |
評価方法と結果は以下の表に示します。
モデル | C-Eval | MMLU | CMMLU | GAOKAO | HumanEval | GSM8K | BBH | AGIEval |
---|---|---|---|---|---|---|---|---|
5-shot | 5-shot | 5-shot | 5-shot | 0-shot | 8-shot | 3-shot | 5-shot | |
GPT-4 | 68.4 | 83.9 | 70.3 | 66.2 | 69.5 | 90.0 | 75.1 | 63.3 |
GPT-3.5 Turbo | 51.1 | 68.5 | 54.1 | 47.1 | 52.4 | 57.8 | 61.6 | 46.1 |
LLaMA2-7B | 28.9 | 45.7 | 31.4 | 26.0 | 12.8 | 16.2 | 39.2 | 26.5 |
ChatGLM2-6B* | 51.7 | 47.9 | - | - | - | 32.4 | 33.7 | - |
Baichuan2-7B-Base* | 54.0 | 54.2 | 57.1 | 47.5 | 18.3 | 24.5 | 41.6 | 42.7 |
Qwen-7B v1.1* | 63.5 | 58.2 | 62.2 | - | 29.9 | 51.7 | 45.0 | - |
語鯨-8B (LingoWhale-8B-base) | 63.6 | 60.2 | 62.8 | 50.3 | 32.9 | 55.0 | 47.5 | 43.8 |
* モデルの結果は公式から取得したもので、すべての結果は小数点以下1位まで丸められています。
生成サンプル
以下は、語鯨-8BモデルをオープンソースのSFTデータで微調整した対話モデルを使用して生成されたサンプルです。
数学計算
問題:f(x)は偶関数で、f(1) = 3、f(2) = 4の場合、f(1) + f(-2) ^2 の値はいくらになりますか? ステップごとに説明してください。
解答:まず、問題で与えられた条件から、以下のことがわかります。
- f(x)は偶関数であり、f(-x) = f(x)です。
- f(1) = 3です。
- f(2) = 4です。
次に、f(1) + f(-2)^2の値を求める必要があります。 f(x)が偶関数であるため、f(-2) = f(2)であり、したがってf(-2) = 4です。 f(1)とf(-2)の値をf(1) + f(-2)^2に代入すると、以下のようになります。 f(1) + f(-2)^2 = 3 + (4)^2 = 3 + 16 = 19。 したがって、f(1) + f(-2)^2の値は19です。
ロールプレイング
問題:豊富なマーケティング経験を持つブランドマネージャーとして、以下のシナリオに関するブランドマーケティング戦略を提案してください。 シナリオ:618期間中にブランドの売上を向上させる。 ブランド定位:国産の高品質な眉ペン。 提案要件:革新的で実効性のあるブランドマーケティング戦略を提供し、ブランドの売上を向上させるために、ライブ配信による販売方案も含めてください。
解答:618期間中にブランドの売上を向上させるために、以下のブランドマーケティング戦略を採用することができます。
- 限定特典イベントの開催:618イベント期間中に、ブランドの公式ウェブサイトで限定特典イベントを開催し、眉ペンを購入すると特典商品をプレゼントしたり、割引セールを行ったりすることで、消費者の注意を引き、販売を促進します。
- ソーシャルメディアでの宣伝:ソーシャルメディアプラットフォーム(微博、微信、抖音など)を通じて、ブランドの宣伝コンテンツを投稿し、製品の紹介、使用方法、ユーザーの評価などを共有することで、ブランドの露出率とユーザーのインタラクションを高めます。
- 有名ブロガーとの協力によるプロモーション:有名な美容ブロガーやインフルエンサーを招待して製品を試用してもらい、彼らのソーシャルメディアで推薦動画や記事を投稿してもらうことで、より多くのターゲット顧客を引き付けます。
- ライブ配信による販売:有名な販売主催者やスターを招待して、製品のライブ配信販売を行い、彼らの影響力を利用して、より多くの消費者の注目と購入を促します。
- 電子商取引プラットフォームでのイベントへの参加:各大電子商取引プラットフォームの割引イベント(割引、特典付き購入など)に積極的に参加し、より多くの消費者に製品を購入してもらいます。
以上のブランドマーケティング戦略により、618期間中にブランドの売上を向上させることができます。また、ライブ配信による販売方案を追加することで、ターゲット顧客をより効果的に引き付け、販売効果を高めることができます。
詩歌創作
問題:岳飛を描いた七言詩を書いてください。詩は宋代の詩のスタイルを希望します。
解答:《岳飛》 鉄馬金戈壮士魂、 精忠報国志凌雲。 千古英雄誰可及、 岳家軍威震乾坤。
文化知識
問題:成都の武侯祠を訪れる予定ですが、武侯の生涯と業績を詳しく教えてください。
解答:諸葛亮(181年 - 234年)は、字孔明、号臥龍と呼ばれ、徐州琅琊陽都(現在の山東省臨沂市沂南県)出身で、三国時代の蜀漢の丞相であり、傑出した政治家、軍事家、文学者、書法家、発明家です。若い頃、叔父の諸葛玄とともに荆州に移り、諸葛玄が亡くなった後、隆中で隠棲していました。劉備が三顧の礼を尽して諸葛亮を迎え、東呉の孫権と連合して赤壁の戦いで曹操軍を大敗させ、三国鼎立の勢いを形成し、さらに荊州と益州を奪取しました。劉備が蜀に入った後、諸葛亮は荊州を守りました。劉備が即位した後、諸葛亮は丞相に任命され、朝政を主宰しました。後主の刘禅が即位した後、諸葛亮は武郷侯に封じられ、益州牧を兼任しました。勤勉で慎重で、大小の政事は必ず自ら処理し、賞罰が明確でした。東呉と同盟を結び、西南の各族との関係を改善し、屯田政策を実施し、戦備を強化しました。前後5回にわたって中原を北伐しましたが、多くは糧食不足で無功に終わりました。やがて過労により病に倒れ、234年に五丈原(現在の陝西省岐山県南)で亡くなり、享年54歳でした。刘禅は彼を忠武侯と追封し、後世ではしばしば武侯と尊称されています。東晋の政権は彼の軍事才能を評価し、武興王と追封しました。諸葛亮の散文の代表作には、《出師表》、《誡子書》などがあります。また、木牛流馬や孔明灯を発明し、連弩を改良して、1弩で10矢を同時に発射できる諸葛連弩を作りました。諸葛亮は一生を「鞠躬尽瘁、死而后已」という精神で過ごし、中国の伝統文化における忠臣と賢者の代表的な人物です。
コード生成
問題:あなたはプログラミング開発者です。Pythonを使用して、文字列が有効な携帯電話番号であるかどうかを判断する正規表現を書いてください。
解答:
import re
def is_valid_phone(phone):
pattern = r'^1[3-9]\d{9}$'
return bool(re.match(pattern, phone))
print(is_valid_phone('13800138000')) # True
print(is_valid_phone('12345678901')) # False
デプロイと推論
依存関係のインストール
pip install -r requirements.txt
- flash attentionを使用する場合は、flash-attnをインストールする必要があります。
- LoRAなどの少パラメータ微調整方法を使用する場合は、peftを追加でインストールする必要があります。
Pythonサンプルコード
>>> from transformers import AutoModelForCausalLM, AutoTokenizer
>>> tokenizer = AutoTokenizer.from_pretrained("deeplang-ai/LingoWhale-8B", trust_remote_code=True)
>>> model = AutoModelForCausalLM.from_pretrained("deeplang-ai/LingoWhale-8B", device_map="auto", trust_remote_code=True)
>>> inputs = tokenizer("陋室铭\n唐 刘禹锡\n", return_tensors="pt")
>>> inputs = inputs.to("cuda:0")
>>> pred = model.generate(**inputs, max_new_tokens=100, repetition_penalty=1.1)
>>> print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))
微調整方法
モデルの微調整サンプルコードはtransformers.Trainer
をベースに作成されており、大部分のパラメータと使用方法はHuggingfaceのTrainer
のチュートリアルと説明を参照することができます。
この章では微調整のプロセスを示すことを目的としており、この微調整設定で微調整されたモデルの性能を保証するものではありません。
シングルマシンでのトレーニング
以下は、シングルマシンで微調整を行う例です。使用するデータはCOIGデータセットからランダムに選択された10000件の指令微調整データです。独自のデータを使用することもできます。
hostfile=""
deepspeed --hostfile=$hostfile finetune/finetune.py \
--report_to "none" \
--data_path "finetune/data/coig_10k.json" \
--model_name_or_path deeplang-ai/LingoWhale-8B \
--output_dir "output" \
--model_max_length 2048 \
--num_train_epochs 4 \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 1 \
--save_strategy epoch \
--learning_rate 2e-5 \
--lr_scheduler_type constant \
--adam_beta1 0.9 \
--adam_beta2 0.98 \
--adam_epsilon 1e-8 \
--max_grad_norm 1.0 \
--weight_decay 1e-4 \
--warmup_ratio 0.0 \
--logging_steps 1 \
--gradient_checkpointing True \
--deepspeed finetune/ds_config.json \
--bf16 True \
--tf32 True
独自のデータを使用する場合は、以下の形式のjsonファイルを使用することができます。
[
{
"id": 0,
"conversations": [
{
"from": "human",
"value": "「モード年齢」とは何ですか?"
},
{
"from": "model",
"value": "モード年齢は、放射性崩壊の法則を利用して、地質試料が形成されたときの初期同位体組成を仮定して計算された年齢を指します。"
},
...
]
},
...
]
マルチマシンでのトレーニング
マルチマシンでのトレーニングには、以下の形式のhostfile
ファイルを編集する必要があります。各行は1つのマシンを表し、ip_address-X
は各マシンのIPアドレスで、slots
の内容はマシンで利用可能なGPUの数を表します。内容の形式は以下の通りです。
ip_address-1 slots=8
ip_address-2 slots=8
ip_address-3 slots=8
ip_address-4 slots=8
...
同時に、hostfile
パラメータをhostfile
ファイルのパスに指定し、以下のコマンドを実行することで、マルチマシンでのトレーニングを開始することができます。
hostfile="/path/to/hostfile"
deepspeed --hostfile=$hostfile finetune/finetune.py \
--report_to "none" \
--data_path "finetune/data/coig_10k.json" \
--model_name_or_path deeplang-ai/LingoWhale-8B \
--output_dir "output" \
--model_max_length 2048 \
--num_train_epochs 4 \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 1 \
--save_strategy epoch \
--learning_rate 2e-5 \
--lr_scheduler_type constant \
--adam_beta1 0.9 \
--adam_beta2 0.98 \
--adam_epsilon 1e-8 \
--max_grad_norm 1.0 \
--weight_decay 1e-4 \
--warmup_ratio 0.0 \
--logging_steps 1 \
--gradient_checkpointing True \
--deepspeed finetune/ds_config.json \
--bf16 True \
--tf32 True
少パラメータ微調整
peftを使用することで、LoRA、Prefix-Tuningなどの少パラメータ微調整方法を簡単に適用することができます。現在のコードではLoRAのトレーニング方法が集積されており、--use_lora True
を追加することで起動することができます。
LoRAトレーニングのチェックポイントは、以下のコードで読み込んで呼び出すことができます。
from peft import AutoPeftModelForCausalLM
model = AutoPeftModelForCausalLM.from_pretrained("output", trust_remote_code=True)
🔧 技術詳細
- 事前学習データ:数兆のトークンを持つ高品質な中英データで事前学習されています。
- コンテキスト長:事前学習段階では8Kのコンテキスト長で学習されており、長文脈の理解と生成タスクも処理できます。
- 微調整方法:
transformers.Trainer
をベースにした微調整サンプルコードを提供しており、シングルマシンとマルチマシンでのトレーニング、少パラメータ微調整(LoRAなど)もサポートしています。
📄 ライセンス
コミュニティで語鯨-8Bモデルを使用する場合は、Apache 2.0と《語鯨-8Bモデル許諾契約書》に従う必要があります。このソースモデルまたはその派生物を商用目的で使用する場合は、アンケートに記入して申請し、承認されると無料で商用利用することができます。
⚠️ 重要提示
モデルのパラメータ数の影響により、大規模言語モデルに固有の幻覚問題や数学計算能力が比較的弱いといった問題は、語鯨-8Bモデルにも依然として存在します。使用する前にこれらの問題を理解し、潜在的なリスクを評価してください。将来の語鯨モデルのバージョンでは、これらの問題に重点的に取り組んで改善されます。



