🚀 雪花北极星模型(Snowflake Arctic)
雪花北极星模型(Snowflake Arctic)是由雪花人工智能研究团队从头开始预训练的一种密集混合专家(Dense - MoE)混合变压器架构。该模型在企业人工智能领域具有高效智能、真正开放的特点,能为研究、原型开发和产品应用提供强大支持。
📚 详细文档
模型详情
北极星(Arctic)是由雪花人工智能研究团队从零开始预训练的密集混合专家(Dense - MoE)混合变压器架构。我们依据Apache - 2.0许可协议发布了北极星模型的基础版本和指令调优版本的模型检查点。这意味着你可以在自己的研究、原型和产品中自由使用它们。
有关北极星的更多信息,以及其他相关资源(如一系列涵盖训练自定义MoE模型、如何生成高质量训练数据等主题的手册)的链接,请参阅我们的博客文章 Snowflake Arctic: The Best LLM for Enterprise AI — Efficiently Intelligent, Truly Open。
有关雪花北极星的最新详细信息(包括教程等),请参考我们的GitHub仓库:
- https://github.com/Snowflake - Labs/snowflake - arctic
模型开发者:雪花人工智能研究团队
许可证:Apache - 2.0
输入:模型仅接受文本输入。
输出:模型仅生成文本和代码。
模型发布日期:2024年4月24日。
模型架构
北极星将一个100亿参数的密集变压器模型与一个残差128x366亿参数的混合专家(MoE)多层感知机(MLP)相结合,使用top - 2门控选择后,总参数达到4800亿,活跃参数为170亿。有关北极星模型架构、训练过程、数据等的更多详细信息,请 [参阅我们的系列手册](https://www.snowflake.com/en/data - cloud/arctic/cookbook/)。
🚀 快速开始
北极星目前通过利用 [自定义代码功能](https://huggingface.co/docs/transformers/en/custom_models#using - a - model - with - custom - code) 得到 transformers
库的支持。要使用此功能,你只需在调用 AutoTokenizer
和 AutoModelForCausalLM
时添加 trust_remote_code=True
。不过,我们建议你使用4.39或更高版本的 transformers
库:
pip install transformers>=4.39.0
北极星利用了 DeepSpeed 的多项功能,你需要安装DeepSpeed 0.14.2或更高版本才能获得所有必需的功能:
pip install deepspeed>=0.14.2
推理示例
由于模型规模较大,我们建议使用你喜欢的云提供商提供的单个8xH100实例,例如:AWS [p5.48xlarge](https://aws.amazon.com/ec2/instance - types/p5/)、Azure [ND96isr_H100_v5](https://learn.microsoft.com/en - us/azure/virtual - machines/nd - h100 - v5 - series) 等。
在这个示例中,我们在后端使用了DeepSpeed提供的FP8量化,我们也可以通过在 QuantizationConfig
配置中指定 q_bits = 6
来使用FP6量化。在我们能够让DeepSpeed的FP量化作为 [HFQuantizer](https://huggingface.co/docs/transformers/main/en/hf_quantizer#build - a - new - hfquantizer - class) 原生支持之前,需要将 max_memory
设置为 "150GiB"
,我们正在积极推进这方面的工作。
import os
os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from deepspeed.linear.config import QuantizationConfig
tokenizer = AutoTokenizer.from_pretrained(
"Snowflake/snowflake-arctic-instruct",
trust_remote_code=True
)
quant_config = QuantizationConfig(q_bits=8)
model = AutoModelForCausalLM.from_pretrained(
"Snowflake/snowflake-arctic-instruct",
trust_remote_code=True,
low_cpu_mem_usage=True,
device_map="auto",
ds_quantization_config=quant_config,
max_memory={i: "150GiB" for i in range(8)},
torch_dtype=torch.bfloat16)
content = "5x + 35 = 7x - 60 + 10. Solve for x"
messages = [{"role": "user", "content": content}]
input_ids = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to("cuda")
outputs = model.generate(input_ids=input_ids, max_new_tokens=256)
print(tokenizer.decode(outputs[0]))
北极星的GitHub页面上有更多关于运行推理的代码片段和示例:
- 纯Hugging Face示例:https://github.com/Snowflake - Labs/snowflake - arctic/blob/main/inference
- 使用vLLM的教程:https://github.com/Snowflake - Labs/snowflake - arctic/tree/main/inference/vllm
📄 许可证
本模型使用Apache - 2.0许可证。