🚀 トランスフォーマーモデル
このモデルは、ai21labs/Jamba-v0.1 をチャットボットとして微調整するのがどれほど簡単かを判断するための小規模実験として学習されました。この実験の目的は、QLoRAで数時間だけ微調整した場合、Jambaが英語と他の言語でどれほど賢く、信頼性高くチャットできるかを見つけることです。初期の主観的なテストでは、このモデルが英語と他の言語の両方でかなり良好にチャットできることが示されています。ぜひ試してみてください!
🚀 クイックスタート
このモデルを使用するには、まず必要なライブラリをインストールする必要があります。その後、コード例を参考にモデルを実行できます。
✨ 主な機能
- 英語と他の言語でのチャットが可能。
- システムメッセージを使用してモデルの応答を制御できる。
- 多ターンの会話にも対応している。
📦 インストール
Jambaを使用するには、transformers
バージョン4.39.0以上が必要です。
pip install transformers>=4.39.0
最適化されたMamba実装を実行するには、まず mamba-ssm
と causal-conv1d
をインストールする必要があります。
pip install mamba-ssm causal-conv1d>=1.2.0
また、モデルをCUDAデバイス上で実行する必要があります。最適化されたMambaカーネルを使用せずにモデルを実行することもできますが、レイテンシが大幅に増加するため、推奨されません。その場合は、モデルをロードする際に use_mamba_kernels=False
を指定する必要があります。
💻 使用例
基本的な使用法
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
import torch
double_quant_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_use_double_quant=True,
bnb_4bit_compute_dtype=torch.float16
)
model = AutoModelForCausalLM.from_pretrained("lightblue/Jamba-v0.1-chat-multilingual", device_map="auto", quantization_config=double_quant_config, trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained("lightblue/Jamba-v0.1-chat-multilingual")
input_text = """<|im_start|>system
You are a helpful AI assistant.
<|im_end|>
<|im_start|>user
What is the most interesting fact about kangaroos that you know?
<|im_end|>
<|im_start|>assistant
"""
input_ids = tokenizer(input_text, return_tensors='pt').to(model.device)["input_ids"]
outputs = model.generate(input_ids, max_new_tokens=256, temperature=0.0, repetition_penalty=1.1)
print(tokenizer.batch_decode(outputs)[0])
📚 ドキュメント
初期テスト結果
全体的に、このモデルは一部の領域で適切な知識を持っている一方で、他の領域では誤った情報を生成することがあります。また、システムメッセージを使用してモデルを制御するのは比較的簡単で、韻を踏んだり、英語の難易度を調整したりすることもできます。多ターンの精度は、ごく少量のテストでは適切であるように見えます。多言語テストでは、このモデルが提示された言語でかなり信頼性高く応答することが示されています。
トレーニング詳細
このモデルは、2つのオープンソースデータセット(1つは多言語)を使用して、A100(80GB)x 4環境で1エポック、3時間学習されました。
トレーニングデータ
- jondurbin/airoboros-3.2
英語のLLMタスクが約59Kの例で構成されたデータセットで、主にGPT - 4で生成されています。このデータセットは、世界で最も優れたパフォーマンスを持つオープンソースLLMのいくつか(例:jondurbin/bagel-7b-v0.4、NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO)によって使用されており、さまざまなタスクを含んでいるため、多面的で正確なモデルにつながると仮定しました。このため、トレーニングデータの大部分にこのデータセットを選択しました。なお、jondurbin/airoboros-3.2の各要素にはすでにシステムメッセージが含まれています。
- openchat/openchat_sharegpt4_dataset (GPT - 4の応答のみ)
ユーザーとGPT - 4の間の多言語の多ターンチャットが約6Kの例で構成されたデータセットです。jondurbin/airoboros-3.2は以前のモデルで良好な結果をもたらしていますが、残念ながら多言語データがほとんど含まれていません。私たちは日本のAI企業であるため、LLMが日本語でも出力できる必要があります。そのため、ShareGPTデータセットから多くの言語のGPT - 4の応答の小規模で質の高いデータセットも選択しました。トレーニングの効率を最大化するために、データセットをできるだけ小規模で高品質に保ちたかったので、GPT - 4の応答のみを選択しました。なお、openchat/openchat_sharegpt4_datasetにはシステムメッセージが含まれていないため、「You are GPT - 4, a helpful assistant.」をシステムメッセージとして追加しました。
データ準備コード
import os
import pandas as pd
from datasets import load_dataset, Dataset, concatenate_datasets
os.environ['HF_HOME'] = "/workspace/hf_home"
os.environ['HF_HUB_ENABLE_HF_TRANSFER'] = "1"
boros_dataset = load_dataset("jondurbin/airoboros-3.2", split='train')
gpt4_df = pd.read_json("https://huggingface.co/datasets/openchat/openchat_sharegpt4_dataset/resolve/main/sharegpt_gpt4.json?download=true")
gpt4_df["conversations"] = gpt4_df["items"].apply(lambda x: [{'from': 'system', 'value': 'You are GPT-4, a helpful assistant.'}] + x)
gpt4_dataset = Dataset.from_pandas(gpt4_df[["conversations"]])
dataset = concatenate_datasets([gpt4_dataset, boros_dataset]).shuffle()
dataset.select_columns(["conversations"]).to_json("/workspace/airoboros-3.2_plus_openchat_sharegp
🔧 技術詳細
モデル詳細
属性 |
详情 |
モデルタイプ |
Joint Attention and Mamba (Jamba) |
ライセンス |
Apache 2.0 |
コンテキスト長 |
256K |
知識のカットオフ日 |
2024年3月5日 |
📄 ライセンス
このモデルはApache 2.0ライセンスの下で提供されています。