❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
🚀 快速阅读
- 模型升级:360Zhinao2-7B是360智脑7B参数的升级版,采用全新的多阶段训练方式和更优质的数据处理策略。
- 功能强大:模型支持语言理解与生成、聊天能力、数学逻辑推理等多项功能,适用于多种商业场景。
- 技术领先:在国内外同尺寸开源模型中,360Zhinao2-7B在中文能力、IFEval指令遵循7B和复杂数学推理能力方面均排名第一。
正文(附运行示例)
360Zhinao2-7B是什么
360Zhinao2-7B是360自研的AI大模型360智脑7B参数升级版,涵盖基础模型及多种上下文长度的聊天模型。该模型是继360Zhinao1-7B之后的重要更新,基于采用全新的多阶段训练方式和更优质的数据处理策略,提升中英文通用能力,增强模型的数学逻辑推理能力。
在国内外同尺寸开源模型中,360Zhinao2-7B在中文能力、IFEval指令遵循7B和复杂数学推理能力方面均排名第一。模型的长文本微调能力在各个长文本benchmark上也位列第一梯队。
360Zhinao2-7B的主要功能
- 语言理解与生成:能理解和生成中文和英文文本,适用于多种语言处理任务。
- 聊天能力:提供强大的聊天功能,支持生成流畅、相关且准确的对话回复。
- 多上下文长度支持:具有不同上下文长度的聊天模型,能处理从4K到360K不同长度的对话历史。
- 数学逻辑推理:在数学问题解答和逻辑推理方面表现出色,能处理复杂的数学问题。
- 多语言支持:除中文,模型也支持英文,能在不同语言的数据集上进行训练和推理。
- 商业应用:支持免费商用,适用于教育、医疗、智能客服等多个商业场景。
360Zhinao2-7B的技术原理
- 大规模预训练:采用两阶段训练方法,首先进行大规模的无差别数据训练,然后增加高质量数据的比例,进行第二阶段训练。
- 大量数据训练:模型训练涉及10T(万亿)个token的第一阶段训练和100B(百亿)个token的第二阶段训练。
- Transformer架构:基于Transformer架构,一种深度学习模型,广泛应用于自然语言处理任务。
- 自注意力机制:模型使用自注意力机制处理输入序列中的每个元素,让模型能理解单词或短语之间的复杂关系。
- 上下文建模:聊天模型支持不同长度的上下文,能根据对话历史生成回复,要求模型具备良好的上下文建模能力。
- 优化策略:采用余弦退火等学习率调度策略,优化训练过程;采用BF16(Brain Floating Point 16)等混合精度训练技术,提高训练效率和减少内存使用。
如何运行 360Zhinao2-7B
依赖安装
- python >= 3.8
- pytorch >= 2.0
- transformers >= 4.37.2
- CUDA >= 11.4
pip install -r requirements.txt
可选安装Flash-Attention 2以提高性能和减少内存占用。
FLASH_ATTENTION_FORCE_BUILD=TRUE pip install flash-attn==2.3.6
🤗 Transformers
基础模型推理示例
from transformers import AutoTokenizer, AutoModelForCausalLM
from transformers.generation import GenerationConfig
MODEL_NAME_OR_PATH = "qihoo360/360Zhinao2-7B-Base"
tokenizer = AutoTokenizer.from_pretrained(
MODEL_NAME_OR_PATH,
trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME_OR_PATH,
device_map="auto",
trust_remote_code=True)
generation_config = GenerationConfig.from_pretrained(
MODEL_NAME_OR_PATH,
trust_remote_code=True)
inputs = tokenizer('中国二十四节气\n1. 立春\n2. 雨水\n3. 惊蛰\n4. 春分\n5. 清明\n', return_tensors='pt')
inputs = inputs.to(model.device)
pred = model.generate(input_ids=inputs["input_ids"], generation_config=generation_config)
print("outputs:\n", tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))
聊天模型推理示例
from transformers import AutoTokenizer, AutoModelForCausalLM
from transformers.generation import GenerationConfig
MODEL_NAME_OR_PATH = "qihoo360/360Zhinao2-7B-Chat-4K"
tokenizer = AutoTokenizer.from_pretrained(
MODEL_NAME_OR_PATH,
trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME_OR_PATH,
device_map="auto",
trust_remote_code=True)
generation_config = GenerationConfig.from_pretrained(
MODEL_NAME_OR_PATH,
trust_remote_code=True)
messages = []
#round-1
messages.append({
"role": "user", "content": "介绍一下刘德华"})
response = model.chat(tokenizer=tokenizer, messages=messages, generation_config=generation_config)
messages.append({
"role": "assistant", "content": response})
print(messages)
#round-2
messages.append({
"role": "user", "content": "他有什么代表作?"})
response = model.chat(tokenizer=tokenizer, messages=messages, generation_config=generation_config)
messages.append({
"role": "assistant", "content": response})
print(messages)
🤖 ModelScope
基础模型推理示例
from modelscope import AutoModelForCausalLM, AutoTokenizer
from modelscope import GenerationConfig
MODEL_NAME_OR_PATH = "qihoo360/360Zhinao2-7B-Base"
tokenizer = AutoTokenizer.from_pretrained(
MODEL_NAME_OR_PATH,
trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME_OR_PATH,
device_map="auto",
trust_remote_code=True)
generation_config = GenerationConfig.from_pretrained(
MODEL_NAME_OR_PATH,
trust_remote_code=True)
inputs = tokenizer('中国二十四节气\n1. 立春\n2. 雨水\n3. 惊蛰\n4. 春分\n5. 清明\n', return_tensors='pt')
inputs = inputs.to(model.device)
pred = model.generate(input_ids=inputs["input_ids"], generation_config=generation_config)
print("outputs:\n", tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))
聊天模型推理示例
from modelscope import AutoModelForCausalLM, AutoTokenizer
from modelscope import GenerationConfig
MODEL_NAME_OR_PATH = "qihoo360/360Zhinao2-7B-Chat-4K"
tokenizer = AutoTokenizer.from_pretrained(
MODEL_NAME_OR_PATH,
trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME_OR_PATH,
device_map="auto",
trust_remote_code=True)
generation_config = GenerationConfig.from_pretrained(
MODEL_NAME_OR_PATH,
trust_remote_code=True)
messages = []
#round-1
messages.append({
"role": "user", "content": "介绍一下刘德华"})
response = model.chat(tokenizer=tokenizer, messages=messages, generation_config=generation_config)
messages.append({
"role": "assistant", "content": response})
print(messages)
#round-2
messages.append({
"role": "user", "content": "他有什么代表作?"})
response = model.chat(tokenizer=tokenizer, messages=messages, generation_config=generation_config)
messages.append({
"role": "assistant", "content": response})
print(messages)
资源
- 项目官网:https://ai.360.com
- GitHub 仓库:https://github.com/Qihoo360/360zhinao2
- HuggingFace 模型库:https://huggingface.co/collections/qihoo360/360zhinao2
- arXiv 技术论文:https://arxiv.org/abs/2405.13386
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦