模型简介
模型特点
模型能力
使用案例
🚀 Mistral-7B-Customer-Support-v1
本模型专为客户支持领域打造,是在基础模型上微调而来,能快速准确地回答客户关于银行服务的问题。通过使用混合合成数据训练,它为特定领域的定制化提供了便利,有助于创建更贴合实际需求的聊天机器人、虚拟助手和副驾驶。
🚀 快速开始
本模型是Bitext公司针对客户支持领域,在大语言模型微调的两步走策略中的第一步。它能够为客户提供关于银行服务需求的快速准确解答,适用于创建聊天机器人、虚拟助手和副驾驶等应用。
✨ 主要特性
- 领域定制:专门针对客户支持领域进行微调,能更好地处理该领域的问题。
- 定制便捷:通用的垂直化模型,便于使用少量自有数据进行进一步定制。
- 数据优质:使用混合合成数据和自动化数据标注工具进行训练,数据质量有保障。
💻 使用示例
基础用法
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("bitext-llm/Mistral-7B-Customer-Support-v1")
tokenizer = AutoTokenizer.from_pretrained("bitext-llm/Mistral-7B-Customer-Support-v1")
inputs = tokenizer("<s>[INST] I want to change to the standard account [/INST] ", return_tensors="pt")
outputs = model.generate(inputs['input_ids'], max_length=50)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
📚 详细文档
模型描述
本模型名为 ["Mistral-7B-Customer-Support-v1"],是 mistralai/Mistral-7B-Instruct-v0.2 的微调版本,专为客户支持领域量身定制。它经过优化,能够回答问题并协助用户处理各种支持事务。该模型使用了通过我们的NLP/NLG技术和自动化数据标注(DAL)工具生成的混合合成数据进行训练。
此模型的目标是展示通用的垂直化模型能让最终用例的定制变得更加容易。例如,如果你是 “ACME公司”,可以使用这个微调后的模型,并使用少量你自己的数据进行额外的微调,从而创建你自己的定制模型。这种方法的概述可在 从通用大语言模型到垂直化企业模型 中找到。
预期用途
- 推荐应用:该模型旨在作为Bitext公司在客户支持领域进行大语言模型微调的两步走策略的第一步,用于创建聊天机器人、虚拟助手和副驾驶,为客户提供关于银行服务需求的快速准确解答。
- 非适用范围:该模型不适用于一般对话目的,也不应用于提供医疗、法律或安全关键建议。
数据集描述
概述
用于微调的数据集可用于训练大语言模型进行微调与领域适配,其中包括:
- 用例:意图检测
- 领域:客户服务
- 27个意图,分为10个类别
- 26,872个问答对,每个意图约1000个
- 30种实体/槽类型
- 12种不同类型的语言生成标签
类别和意图
数据集涵盖以下类别和意图:
- 账户相关:创建账户、删除账户、编辑账户、切换账户
- 取消费用相关:查询取消费用
- 配送相关:配送选项
- 反馈相关:投诉、评价
- 发票相关:查询发票、获取发票
- 新闻通讯相关:订阅新闻通讯
- 订单相关:取消订单、更改订单、下单
- 支付相关:查询支付方式、支付问题
- 退款相关:查询退款政策、跟踪退款
- ** shipping地址相关**:更改 shipping地址、设置 shipping地址
实体
数据集中包含各种实体,如:订单编号、发票编号、在线订单交互、在线支付交互、在线导航步骤、在线客户支持渠道、个人资料、个人资料类型、设置、在线公司门户信息、日期、日期范围、 shipping截止时间、配送城市、配送国家、称呼、客户名字、客户姓氏、客户支持电话号码、客户支持电子邮件、在线聊天支持、网站URL、升级账户、账户类型、账户类别、账户变更、项目、退款金额、金额、商店位置。
语言生成标签
数据集包含各种语言现象的标签:
- 词汇变体:形态学(M)、语义(L)
- 句法结构变体:基本(B)、疑问(I)、并列(C)、否定(N)
- 语言风格变体:礼貌(P)、口语化(Q)、冒犯性(W)
- 文体变体:关键词(K)、缩写(E)、错误和拼写错误(Z)
- 其他标签:间接引语(D)、区域变体(G)、尊重结构(R)、代码切换(Y)
限制和偏差
- 该模型在特定领域的数据集上进行了微调,在客户支持领域之外的表现可能不佳。
- 用户应注意训练数据中可能存在的偏差,因为模型的回答可能会无意中反映这些偏差。尽管数据集旨在涵盖一般的客户服务查询,但特定用例可能仍存在偏差。
伦理考量
使用此模型时应负责任,考虑到自动化客户服务的伦理影响。重要的是确保模型的建议能够补充人类专业知识,并遵守相关的客户服务指南。
致谢
该模型由Bitext公司开发,并在Bitext提供的基础设施上进行训练。
🔧 技术细节
模型架构
该模型采用 MistralForCausalLM
架构和 LlamaTokenizer
。它保留了基础Mistral模型的配置,但经过微调,能够更好地理解和生成与客户服务相关的响应。
训练数据
该模型使用 bitext/Bitext-customer-support-llm-chatbot-training-dataset 进行微调,该数据集专为客户服务领域的问答交互而设计。此数据集包含各种客户服务主题的指令和响应,确保模型能够处理该领域的各种查询。数据集涵盖了分配到10个类别的27个意图,如 cancel_order
、place_order
、change_order
和 check_invoice
等。每个意图约有1000个示例,展示了旨在理解和生成准确客户服务交互响应的训练过程。
训练过程
超参数
- 优化器:AdamW,beta值为(0.9, 0.999),epsilon为1e-08
- 学习率:0.0002,采用余弦学习率调度器
- 训练轮数:1
- 批量大小:8
- 梯度累积步数:4
- 最大序列长度:1024个标记
环境
- Transformers版本:4.40.0.dev0
- 框架:PyTorch 2.2.1+cu121
- 分词器:Tokenizers 0.15.0
训练结果
训练损失 | 训练轮数 | 步数 | 验证损失 |
---|---|---|---|
1.6865 | 0.01 | 1 | 2.0557 |
0.6351 | 0.25 | 32 | 0.8355 |
0.5724 | 0.5 | 64 | 0.7859 |
0.5249 | 0.75 | 96 | 0.7711 |
0.516 | 1.0 | 128 | 0.7667 |
📄 许可证
此模型 “Mistral-7B-Customer-Support-v1” 由Bitext Innovations International, Inc. 根据Apache License 2.0许可。该开源许可证允许免费使用、修改和分发该模型,但要求对Bitext给予适当的认可。
Apache 2.0许可证要点
- 许可范围:用户可以自由使用、修改和分发此软件。
- 归属要求:使用此模型时,必须按照原始版权声明和许可证的要求,向Bitext Innovations International, Inc. 提供适当的认可。
- 专利授权:许可证包含模型贡献者授予的专利权利。
- 无担保声明:模型 “按原样” 提供,不提供任何形式的保证。
你可以在 Apache License 2.0 查看完整的许可证文本。
这种许可方式确保了模型可以被广泛自由地使用,同时尊重了Bitext的知识产权贡献。如需了解更多详细信息或关于使用此许可证的具体法律问题,请参考上述链接的官方许可证文档。
查看axolotl配置
axolotl版本:0.4.0
base_model: mistralai/Mistral-7B-Instruct-v0.2
model_type: MistralForCausalLM
tokenizer_type: LlamaTokenizer
is_mistral_derived_model: true
hub_model_id: malmarjeh/Mistral-7B-instruct-v0.2
load_in_8bit: false
load_in_4bit: true
strict: false
datasets:
- path: bitext/Bitext-customer-support-llm-chatbot-training-dataset
type:
system_prompt: 'You are an expert in customer support.'
field_instruction: instruction
field_output: response
format: '[INST] {instruction} [/INST]'
no_input_format: '[INST] {instruction} [/INST]'
#datasets:
# - path: json
# type: alpaca_w_system.load_open_orca
#data_files: file.zip
dataset_prepared_path:
val_set_size: 0.05
output_dir: ./qlora-out
adapter: qlora
lora_model_dir:
sequence_len: 1024
sample_packing: true
pad_to_sequence_len: true
eval_sample_packing: False
lora_r: 32
lora_alpha: 16
lora_dropout: 0.05
lora_target_linear: true
lora_fan_in_fan_out:
lora_target_modules:
- gate_proj
- down_proj
- up_proj
- q_proj
- v_proj
- k_proj
- o_proj
wandb_project: axolotl
wandb_entity:
wandb_watch:
wandb_name:
wandb_log_model:
gradient_accumulation_steps: 4
micro_batch_size: 8
num_epochs: 1
optimizer: adamw_bnb_8bit
lr_scheduler: cosine
learning_rate: 0.0002
train_on_inputs: false
group_by_length: false
bf16: auto
fp16:
tf32: false
gradient_checkpointing: true
early_stopping_patience:
resume_from_checkpoint:
local_rank:
logging_steps: 1
xformers_attention:
flash_attention: true
loss_watchdog_threshold: 5.0
loss_watchdog_patience: 3
warmup_steps: 10
evals_per_epoch: 4
eval_table_size:
eval_max_new_tokens: 128
saves_per_epoch: 1
debug:
deepspeed:
weight_decay: 0.0
fsdp:
fsdp_config:
special_tokens:
bos_token: '<s>'
eos_token: '</s>'
unk_token: '<unk>'



