🚀 Llama-3-Typhoon-1.5X-8B-instruct: タイ語用大規模言語モデル(命令型)
Llama-3-Typhoon-1.5X-8B-instruct は、タイ語 🇹🇭 用に設計された80億パラメータの命令型モデルです。GPT-3.5-turboと競争力のある性能を示し、アプリケーション ユースケース、検索拡張生成 (RAG)、制約付き生成、および 推論 タスクに最適化されています。
Typhoon 1.5 8BとLlama 3 8B Instructをベースに構築されています。このモデルは、クロス言語転移 に関する実験の成果です。タスク算術モデル編集 技術を利用し、Typhoonのタイ語理解能力とLlama 3 Instructの人間との整合性性能を組み合わせています。
注: 基礎モデルを作成する際のMetaの努力を認め、ライセンスに準拠するため、モデル名に "llama-3" を明示的に含めています。
📚 モデルの詳細
✨ 性能評価
モデルの性能を 言語と知識能力 および 命令追従能力 の観点から評価しました。
言語と知識能力
- ThaiExamやMMLUなどの選択肢付き質問応答データセットを使用して評価しました。
命令追従能力
- ベータユーザーのフィードバックに基づいて評価し、以下の2つの要素に焦点を当てました。
- 人間との整合性と推論:複数のステップにわたって明確で論理的に構造化された応答を生成する能力。
- MT-Bench を使用して評価 — 大規模言語モデルが埋め込まれた知識を人間のニーズに合わせて回答できるかどうか。
- 命令追従:命令に指定された制約に従う能力。
- IFEval を使用して評価 — 大規模言語モデルが指定された制約(形式や簡潔さなど)に従うことができるかどうか。
注: 元のデータセットをタイ語に翻訳し、人間による検証を行うことで、THペアを開発しました。
ThaiExamの評価結果
モデル |
ONET |
IC |
TGAT |
TPAT-1 |
A-Level |
Average (ThaiExam) |
MMLU |
Typhoon-1.5 8B |
0.446 |
0.431 |
0.722 |
0.526 |
0.407 |
0.5028 |
0.6136 |
Typhoon-1.5X 8B |
0.478 |
0.379 |
0.722 |
0.5 |
0.435 |
0.5028 |
0.6369 |
gpt-3.5-turbo-0125 |
0.358 |
0.279 |
0.678 |
0.345 |
0.318 |
0.3956 |
0.700 |
MT-Benchの評価結果
モデル |
MT-Bench Thai |
MT-Bench English |
Typhoon-1.5 8B |
6.402 |
7.275 |
Typhoon-1.5X 8B |
6.902 |
7.9 |
gpt-3.5-turbo-0125 |
6.186 |
8.181 |
IFEvalの評価結果
モデル |
IFEval Thai |
IFEval English |
Typhoon-1.5 8B |
0.548 |
0.676 |
Typhoon-1.5X 8B |
0.548 |
0.691 |
gpt-3.5-turbo-0125 |
0.479 |
0.659 |
🔧 技術的洞察
モデル編集 技術を利用し、正確なタイ語の回答を生成するために最も重要な特徴はバックエンド(トランスフォーマーブロックの上位層)にあることがわかりました。そのため、これらのバックエンド層にTyphoonコンポーネントを高比率で組み込み、モデルの性能を向上させました。
💻 使用例
基本的な使用法
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "scb10x/llama-3-typhoon-v1.5x-8b-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
messages = [...]
input_ids = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
return_tensors="pt"
).to(model.device)
terminators = [
tokenizer.eos_token_id,
tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = model.generate(
input_ids,
max_new_tokens=512,
eos_token_id=terminators,
do_sample=True,
temperature=0.4,
top_p=0.95,
)
response = outputs[0][input_ids.shape[-1]:]
print(tokenizer.decode(response, skip_special_tokens=True))
高度な使用法
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "scb10x/llama-3-typhoon-v1.5x-8b-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
messages = [...]
input_ids = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
return_tensors="pt"
).to(model.device)
terminators = [
tokenizer.eos_token_id,
tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = model.generate(
input_ids,
max_new_tokens=512,
eos_token_id=terminators,
do_sample=True,
temperature=0.4,
top_p=0.95,
)
response = outputs[0][input_ids.shape[-1]:]
print(tokenizer.decode(response, skip_special_tokens=True))
📜 チャットテンプレート
Llama 3のチャットテンプレートを使用しています。
{% set loop_messages = messages %}{% for message in loop_messages %}{% set content = '<|start_header_id|>' + message['role'] + '<|end_header_id|>\n\n'+ message['content'] | trim + '<|eot_id|>' %}{% if loop.index0 == 0 %}{% set content = bos_token + content %}{% endif %}{{ content }}{% endfor %}{% if add_generation_prompt %}{{ '<|start_header_id|>assistant<|end_header_id|>\n\n' }}{% endif %}
⚠️ 想定される用途と制限
このモデルは実験的なものであり、すべてのユースケースについて完全に評価されているわけではありません。開発者は、特定のアプリケーションのコンテキストでリスクを評価する必要があります。
🔗 フォロー
https://twitter.com/opentyphoon
💬 サポート
https://discord.gg/us5gAYmrxw
👥 SCB 10X Typhoonチーム
- Kunat Pipatanakul, Potsawee Manakul, Sittipong Sripaisarnmongkol, Natapong Nitarach, Pathomporn Chokchainant, Kasima Tharnpipitchai
- Typhoon-1.5Xがあなたの作業に役立つ場合、以下のように引用してください。
@article{pipatanakul2023typhoon,
title={Typhoon: Thai Large Language Models},
author={Kunat Pipatanakul and Phatrasek Jirabovonvisut and Potsawee Manakul and Sittipong Sripaisarnmongkol and Ruangsak Patomwong and Pathomporn Chokchainant and Kasima Tharnpipitchai},
year={2023},
journal={arXiv preprint arXiv:2312.13951},
url={https://arxiv.org/abs/2312.13951}
}
📞 お問い合わせ