型号概览
这是新发布的 Mistra-community/Mixtral-8x22B-v0.1 基础模型的微调。
由于基础模型尚未明确接受聊天训练,因此我们在多语言聊天数据集上训练该模型,以便 LLM 社区可以使用该模型进行对话。
该模型的准确率出奇的高,并且推理速度相当快(在我们的测试中单批次大约为 40 个令牌/秒),因此我们相信这对社区有用。
如何使用
我们已经测试(因此建议)在 vLLM 上运行该模型。 我们建议使用以下命令从 vLLM openAI 服务器运行它:
pip install vllm
python -m vllm.entrypoints.openai.api_server --model lightblue/Karasu-Mixtral-8x22B-v0.1 --tensor-parallel-size 4 --gpu-memory-utilization 0.95 --max-model-len 1024
这就是我们在 4 x A100 (80GB) 机器上运行它的方式。
然后,您可以通过安装 openai 包的 Python 调用该模型:
pip install openai
并像这样调用模型:
from openai import OpenAI
vllm_client = OpenAI(
api_key="EMPTY",
base_url="http://localhost:8000/v1",
)
prompt = "Tell me three cool facts about fish to amaze my 4 year old."
response = vllm_client.chat.completions.create(
messages=[
{"role": "user", "content": prompt},
],
model="/workspace/llm_training/axolotl/mixtral_8x22B_training/merged_model_multiling",
temperature=0,
max_tokens=900,
)
print("### Prompt")
print(prompt)
print()
print("### Response")
print(response.choices[0].message.content)
print()
# ### Prompt
# Tell me three cool facts about fish to amaze my 4 year old.
# ### Response
# 1. Some fish can change their color! Just like a chameleon, some fish can change their color to blend in with their surroundings or to communicate with other fish. For example, the flounder can change its color to match the ocean floor, making it harder for predators to spot them.
# 2. Fish can sleep with their eyes open! Unlike humans, fish don't have eyelids, so they can't close their eyes to sleep. Instead, they rest in a special way, like floating near the surface or hiding in a safe spot, while their body slows down and they take a nap.
# 3. Fish can talk to each other! Well, not exactly like humans, but they do make sounds and communicate with each other using special organs called swim bladders. They can make clicking, grunting, or even singing sounds to find mates, warn others about danger, or mark their territory.
我们将很快上传 4 位 AWQ 模型,以便更轻松地在其他机器上运行该模型(注意这个空间!)。
推理例子
从定性测试来看,该模型似乎相当聪明,尤其是在英语方面,并且对事实的回忆非常好。 它仍然可能与一些逻辑问题混淆,但也通过了我向它提出的许多逻辑问题,而其他开源法学硕士经常失败。
- 创意提示
- 事实提示
- 逻辑问题
- 多圈
- 偏好问题
- 多语言问题
训练数据集
我们在人类用户和 GPT-4 之间的对话上训练了这个模型。
这由两个数据集组成:
- 来自 openchat/openchat_sharegpt4_dataset 数据集的 6,206 个对话(链接)
- 我们创建了 3,011 个对话。 希望在训练数据集中增加非英语提示的表示,因此我们从 lmsys/lmsys-chat-1m 中采样初始提示,并根据语言进行分层。 然后,使用这些提示 gpt-4-0125,并将结果用作训练数据。
我们计划很快发布有关第二个数据集的更多信息,因为我们正在使用另一个数据集。
用于训练该模型的完整数据可以在以下位置找到
lightblue/gpt4_conversations_multilingual
训练数据集
使用 Axolotl 的 4 位 QLoRA 配置在 Azure 云 (Standard_NC96ads_A100_v4) 上的 A100 (80GB) x 4 环境中训练该模型大约 100 分钟。
我们使用 Deepspeed Zero2 有效地训练了 4 个以上的 GPU。
使用以下配置来训练模型:
训练配置
base_model: mistral-community/Mixtral-8x22B-v0.1
model_type: AutoModelForCausalLM
tokenizer_type: AutoTokenizer
trust_remote_code: true
load_in_8bit: false
load_in_4bit: true
strict: false
datasets:
- path: lightblue/gpt4_conversations_multilingual
type: sharegpt
conversation: mistral
dataset_prepared_path: ./prepared_dataset_2048-multiling
val_set_size: 0
output_dir: ./qlora-out-2048-multiling
## You can optionally freeze the entire model and unfreeze a subset of parameters
unfrozen_parameters:
# - ^lm_head.weight$
# - ^model.embed_tokens.weight$[:32000]
# - model.layers.2[0-9]+.block_sparse_moe.gate
# - model.layers.2[0-9]+.block_sparse_moe.experts
# - model.layers.3[0-9]+.block_sparse_moe.gate
# - model.layers.3[0-9]+.block_sparse_moe.experts
model_config:
output_router_logits: true
adapter: qlora
lora_model_dir:
sequence_len: 2048
sample_packing: true
pad_to_sequence_len: true
lora_r: 16
lora_alpha: 16
lora_dropout: 0.05
lora_target_linear: true
lora_fan_in_fan_out:
#lora_target_modules:
# - gate
# - q_proj
# - k_proj
# - v_proj
# - o_proj
# - w1
# - w2
# - w3
gradient_accumulation_steps: 2
micro_batch_size: 1
num_epochs: 1
optimizer: adamw_bnb_8bit
lr_scheduler: cosine
learning_rate: 0.0002
use_wandb: true
wandb_project: wandb_project
wandb_entity: wandb_entity
wandb_name: wandb_name
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
warmup_steps: 10
evals_per_epoch: 0
eval_table_size:
eval_max_new_tokens: 128
saves_per_epoch: 5
debug:
deepspeed: /workspace/axolotl/deepspeed_configs/zero2.json
weight_decay: 0.0
fsdp:
fsdp_config:
special_tokens: