基于Jamba-v0.1在Open-Platypus-Chat数据集上通过QLoRA微调的大语言模型,支持对话任务
下载量 21
发布时间 : 3/29/2024
模型介绍
内容详情
替代品
模型简介
该模型是基于ai21labs/Jamba-v0.1微调的对话模型,使用ChatML模板进行交互,适合聊天和问答场景
模型特点
混合架构
结合Transformer和Mamba架构的优势,提供高效的长序列处理能力
QLoRA微调
使用QLoRA技术在有限资源下高效微调大模型
长上下文支持
支持4096 tokens的上下文长度
ChatML模板支持
使用标准化的ChatML模板格式进行对话交互
模型能力
文本生成
对话交互
问答系统
代码生成
创意写作
使用案例
对话系统
智能助手
构建能够理解自然语言指令的智能对话助手
客服机器人
用于自动回答客户常见问题的客服系统
教育
学习辅导
帮助学生解答学习问题,提供解释和示例
license: apache-2.0
language:
- en
dataset: - chargoddard/Open-Platypus-Chat
tags: - axolotl
base_model: ai21labs/Jamba-v0.1
Jambatypus-v0.1
该模型是基于ai21labs/Jamba-v0.1在chargoddard/Open-Platypus-Chat数据集上通过QLoRA微调的版本。
训练使用2块A100 80GB显卡,基于我的LazyAxolotl - Jamba笔记本完成。
本仓库包含FP16精度的适配器和合并后模型。
推荐使用ChatML模板来调用该模型。
查看axolotl配置
axolotl版本: 0.4.0
base_model: ai21labs/Jamba-v0.1
trust_remote_code: true
load_in_8bit: false
load_in_4bit: true
strict: false
datasets:
- path: chargoddard/Open-Platypus-Chat
type: sharegpt
chat_template: chatml
dataset_prepared_path:
val_set_size: 0.01
output_dir: ./out
sequence_len: 4096
sample_packing: true
pad_to_sequence_len: true
eval_sample_packing: false
use_wandb: true
wandb_project: axolotl
wandb_entity:
wandb_watch:
wandb_name: Jambatypus-v0.1
wandb_log_model:
adapter: qlora
lora_r: 16
lora_alpha: 32
lora_dropout: 0.05
lora_target_linear: true
low_cpu_mem_usage: true
gradient_accumulation_steps: 8
micro_batch_size: 1
num_epochs: 1
optimizer: adamw_bnb_8bit
adam_beta2: 0.95
adam_epsilon: 0.00001
max_grad_norm: 1.0
lr_scheduler: cosine
learning_rate: 0.0002
train_on_inputs: false
group_by_length: false
bf16: auto
fp16:
tf32: false
gradient_checkpointing: true
gradient_checkpointing_kwargs:
use_reentrant: false
early_stopping_patience:
resume_from_checkpoint:
local_rank:
logging_steps: 1
xformers_attention:
flash_attention: true
warmup_steps: 10
evals_per_epoch: 4
saves_per_epoch: 4
save_total_limit: 2
debug:
deepspeed:
weight_decay: 0.0
special_tokens:
训练超参数
训练过程中使用的超参数如下:
- 学习率: 0.0002
- 训练批次大小: 1
- 评估批次大小: 1
- 随机种子: 42
- 分布式类型: 多GPU
- 设备数量: 2
- 梯度累积步数: 8
- 总训练批次大小: 16
- 总评估批次大小: 2
- 优化器: Adam,参数为betas=(0.9,0.95)和epsilon=1e-05
- 学习率调度器类型: cosine
- 学习率预热步数: 10
- 训练轮数: 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
💻 使用方式
以下代码创建了一个与Jambatypus交互的Gradio聊天界面。
!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
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")
# 4位精度量化配置
quantization_config = BitsAndBytesConfig(
load_in_8bit=True,
llm_int8_skip_modules=["mamba"]
)
# 加载模型和ChatML格式的tokenizer
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")
# 创建Gradio界面
gr.ChatInterface(
predict,
title="Jambatypus",
description="与Jambatypus聊天!",
examples=[
["你能解方程2x + 3 = 11求x吗?"],
["写一首关于古罗马的史诗。"],
["第一个登上月球的人是谁?"],
["使用列表推导式生成1到10的平方列表。"],
["推荐一些受欢迎的科幻书籍。"],
["你能写一个关于时间旅行侦探的短篇故事吗?"]
],
additional_inputs_accordion=gr.Accordion(label="⚙️ 参数", open=False),
additional_inputs=[
gr.Textbox("尽你所能完成任务。", label="系统提示"),
gr.Slider(0, 1, 0.8, label="温度"),
gr.Slider(128, 4096, 1024, label="最大新令牌数"),
gr.Slider(1, 80, 40, label="Top K采样"),
gr.Slider(0, 2, 1.1, label="重复惩罚"),
gr.Slider(0, 1, 0.95, label="Top P采样"),
],
theme=gr.themes.Soft(primary_hue="green"),
).queue().launch(share=True)
Phi 2 GGUF
其他
Phi-2是微软开发的一个小型但强大的语言模型,具有27亿参数,专注于高效推理和高质量文本生成。
大型语言模型
支持多种语言
P
TheBloke
41.5M
205
Roberta Large
MIT
基于掩码语言建模目标预训练的大型英语语言模型,采用改进的BERT训练方法
大型语言模型
英语
R
FacebookAI
19.4M
212
Distilbert Base Uncased
Apache-2.0
DistilBERT是BERT基础模型的蒸馏版本,在保持相近性能的同时更轻量高效,适用于序列分类、标记分类等自然语言处理任务。
大型语言模型
英语
D
distilbert
11.1M
669
Llama 3.1 8B Instruct GGUF
Meta Llama 3.1 8B Instruct 是一个多语言大语言模型,针对多语言对话用例进行了优化,在常见的行业基准测试中表现优异。
大型语言模型
英语
L
modularai
9.7M
4
Xlm Roberta Base
MIT
XLM-RoBERTa是基于100种语言的2.5TB过滤CommonCrawl数据预训练的多语言模型,采用掩码语言建模目标进行训练。
大型语言模型
支持多种语言
X
FacebookAI
9.6M
664
Roberta Base
MIT
基于Transformer架构的英语预训练模型,通过掩码语言建模目标在海量文本上训练,支持文本特征提取和下游任务微调
大型语言模型
英语
R
FacebookAI
9.3M
488
Opt 125m
其他
OPT是由Meta AI发布的开放预训练Transformer语言模型套件,参数量从1.25亿到1750亿,旨在对标GPT-3系列性能,同时促进大规模语言模型的开放研究。
大型语言模型
英语
O
facebook
6.3M
198
Llama 3.1 8B Instruct
Llama 3.1是Meta推出的多语言大语言模型系列,包含8B、70B和405B参数规模,支持8种语言和代码生成,优化了多语言对话场景。
大型语言模型
Transformers

支持多种语言
L
meta-llama
5.7M
3,898
T5 Base
Apache-2.0
T5基础版是由Google开发的文本到文本转换Transformer模型,参数规模2.2亿,支持多语言NLP任务。
大型语言模型
支持多种语言
T
google-t5
5.4M
702
Xlm Roberta Large
MIT
XLM-RoBERTa是基于100种语言的2.5TB过滤CommonCrawl数据预训练的多语言模型,采用掩码语言建模目标进行训练。
大型语言模型
支持多种语言
X
FacebookAI
5.3M
431
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers

支持多种语言
L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers

英语
C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统
中文
R
uer
2,694
98
AIbase是一个专注于MCP服务的平台,为AI开发者提供高质量的模型上下文协议服务,助力AI应用开发。
简体中文