🚀 Jambatypus-v0.1
このモデルは、ai21labs/Jamba-v0.1 を chargoddard/Open-Platypus-Chat データセットでQLoRA微調整したバージョンです。
LazyAxolotl - Jamba ノートブックを使用して、2xA100 80 GBでトレーニングされています。
このリポジトリには、アダプタとFP16精度のマージされたモデルの両方が含まれています。
このモデルを使用するには、ChatMLテンプレートの使用をおすすめします。

🚀 クイックスタート
このモデルは、特定のデータセットで微調整されたもので、特定の用途に最適化されています。以下のセクションでは、モデルのトレーニング情報や使用方法について説明します。
✨ 主な機能
- 微調整済みモデル:特定のデータセットで微調整されており、特定のタスクに対して高性能を発揮します。
- ChatMLテンプレート対応:ChatMLテンプレートを使用することで、簡単にチャットインターフェースを構築できます。
📦 インストール
このモデルを使用するには、必要なライブラリをインストールする必要があります。以下のコマンドを実行してください。
!pip install -qqq -U git+https://github.com/huggingface/transformers
!pip install -qqq mamba-ssm causal-conv1d>=1.2.0
!pip install -qqq accelerate bitsandbytes torch datasets peft gradio
!pip install -qqq flash-attn --no-build-isolation
💻 使用例
基本的な使用法
以下のコードは、Jambatypusを使用してGradioチャットインターフェースを作成する例です。
import torch
import gradio as gr
from threading import Thread
from peft import PeftModel, PeftConfig
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig, TextIteratorStreamer
STOP_TOKEN = "<|im_end|>"
def predict(message, history, system_prompt, temperature, max_new_tokens, top_k, repetition_penalty, top_p):
stop_token = "<|im_end|>"
instruction = '<|im_start|>system\n' + system_prompt + '\n<|im_end|>\n'
for human, assistant in history:
instruction += '<|im_start|>user\n' + human + '\n<|im_end|>\n<|im_start|>assistant\n' + assistant
instruction += '\n<|im_start|>user\n' + message + '\n<|im_end|>\n<|im_start|>assistant\n'
streamer = TextIteratorStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
enc = tokenizer([instruction], return_tensors="pt", padding=True, truncation=True)
input_ids, attention_mask = enc.input_ids, enc.attention_mask
generate_kwargs = dict(
{"input_ids": input_ids.to(device), "attention_mask": attention_mask.to(device)},
streamer=streamer,
do_sample=True,
temperature=temperature,
max_new_tokens=max_new_tokens,
top_k=top_k,
repetition_penalty=repetition_penalty,
top_p=top_p
)
t = Thread(target=model.generate, kwargs=generate_kwargs)
t.start()
outputs = []
for new_token in streamer:
if STOP_TOKEN in new_token:
outputs.append(new_token[:-len(stop_token)-1])
yield "".join(outputs)
break
outputs.append(new_token)
yield "".join(outputs)
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
tokenizer = AutoTokenizer.from_pretrained("ai21labs/Jamba-v0.1")
quantization_config = BitsAndBytesConfig(
load_in_8bit=True,
llm_int8_skip_modules=["mamba"]
)
model = AutoModelForCausalLM.from_pretrained(
"ai21labs/Jamba-v0.1",
trust_remote_code=True,
torch_dtype=torch.cuda.is_bf16_supported() and torch.bfloat16 or torch.float16,
attn_implementation="flash_attention_2",
low_cpu_mem_usage=True,
quantization_config=quantization_config
)
config = PeftConfig.from_pretrained("mlabonne/Jambatypus-v0.1")
model = PeftModel.from_pretrained(model, "mlabonne/Jambatypus-v0.1")
gr.ChatInterface(
predict,
title="Jambatypus",
description="Chat with Jambatypus!",
examples=[
["Can you solve the equation 2x + 3 = 11 for x?"],
["Write an epic poem about Ancient Rome."],
["Who was the first person to walk on the Moon?"],
["Use a list comprehension to create a list of squares for numbers from 1 to 10."],
["Recommend some popular science fiction books."],
["Can you write a short story about a time-traveling detective?"]
],
additional_inputs_accordion=gr.Accordion(label="⚙️ Parameters", open=False),
additional_inputs=[
gr.Textbox("Perform the task to the best of your ability.", label="System prompt"),
gr.Slider(0, 1, 0.8, label="Temperature"),
gr.Slider(128, 4096, 1024, label="Max new tokens"),
gr.Slider(1, 80, 40, label="Top K sampling"),
gr.Slider(0, 2, 1.1, label="Repetition penalty"),
gr.Slider(0, 1, 0.95, label="Top P sampling"),
],
theme=gr.themes.Soft(primary_hue="green"),
).queue().launch(share=True)
📚 ドキュメント
トレーニングハイパーパラメータ
トレーニング中に使用されたハイパーパラメータは以下の通りです。
パラメータ |
詳細 |
learning_rate |
0.0002 |
train_batch_size |
1 |
eval_batch_size |
1 |
seed |
42 |
distributed_type |
multi-GPU |
num_devices |
2 |
gradient_accumulation_steps |
8 |
total_train_batch_size |
16 |
total_eval_batch_size |
2 |
optimizer |
Adam with betas=(0.9,0.95) and epsilon=1e-05 |
lr_scheduler_type |
cosine |
lr_scheduler_warmup_steps |
10 |
num_epochs |
1 |
トレーニング結果
トレーニング損失 |
エポック |
ステップ |
検証損失 |
0.6274 |
0.01 |
1 |
1.0298 |
0.44 |
0.25 |
42 |
0.9770 |
0.4406 |
0.5 |
84 |
0.9653 |
0.4445 |
0.75 |
126 |
0.9645 |
0.4609 |
1.0 |
168 |
0.9641 |
フレームワークバージョン
- PEFT 0.10.0
- Transformers 4.40.0.dev0
- Pytorch 2.1.2+cu118
- Datasets 2.18.0
- Tokenizers 0.15.0
📄 ライセンス
このモデルは、Apache-2.0ライセンスの下で提供されています。