什么是 Orca 2?
Orca 2 是由微软研究院开发的一对小型语言模型(SLM),提供70亿和130亿参数两个版本。与许多从大型模型缩减而来的模型不同,Orca 2 经过专门训练,以增强小型模型的推理能力。它建立在第一个 Orca 模型的见解之上,该模型证明了改进的训练信号和方法可以显著提升模型的能力。Orca 2 的关键创新在于,它不仅教模型模仿强大“教师”模型(如GPT-4)的输出,还教它针对不同类型的任务采用不同的解决方案策略,微软称之为“谨慎推理”(Cautious Reasoning)。
主要特点
- 增强的推理能力: 在测试零样本推理的复杂任务上,Orca 2 展示了与比其大5-10倍的模型相当甚至超越的推理能力。
- 谨慎推理: 该模型经过训练,能够认识到自己的局限性。对于无法解决的查询,它不会提供可能不正确的答案,而是会声明无法完成请求。
- 多样化的解决方案策略: Orca 2 不是一招鲜。对于简单问题,它可以使用直接回答的方法;但对于复杂问题,它可以切换到更详细的、分步推理的过程。
- 为尺寸优化: 作为一个“小型”语言模型,与大型模型相比,它被设计得更高效,更易于在本地硬件和边缘设备上部署。
使用案例
- 设备端AI助手: 其小巧的体积使其适合在没有持续云连接的设备上运行。
- 复杂指令遵循: 非常适合需要细致理解和执行多步骤指令的应用。
- 逻辑谜题与分析: 可用于分析文本、解决逻辑问题以及执行需要分解问题的任务。
- 安全可控的聊天机器人: “谨慎推理”功能使其成为构建更可靠、更安全的对话式AI的良好候选者。
入门指南
您可以通过 Hugging Face 的 transformers 库来使用 Orca 2。以下是一个“Hello World”风格的示例,用于运行模型推理。
首先,请确保您已安装必要的库: ```bash pip install transformers torch accelerate
然后,使用以下 Python 代码: ```python import torch from transformers import AutoTokenizer, AutoModelForCausalLM
使用 7B 或 13B 模型
model_name = “microsoft/Orca-2-13b”
加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name, device_map=”auto”, torch_dtype=torch.bfloat16)
使用所需的聊天格式创建提示
system_message = “你是Orca,一个由微软创建的AI语言模型。你是一个谨慎的助手。你仔细遵循指示。你乐于助人且无害,你遵循道德准则并提倡积极的价值观。” user_prompt = “我如何建造一个简单的木制鸟舍?”
| prompt = f”< | im_start | >system\n{system_message}< | im_end | >\n< | im_start | >user\n{user_prompt}< | im_end | >\n< | im_start | >assistant” |
生成回应
inputs = tokenizer(prompt, return_tensors=’pt’).to(model.device) outputs = model.generate(**inputs, max_new_tokens=500, use_cache=True, do_sample=True, temperature=0.7, top_p=0.95) response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)
定价
Orca 2 在 微软研究许可证 下发布,这意味着它可以免费使用,主要用于研究和非商业目的。它不是一个有订阅或按使用付费模式的商业产品。
训练方法论
Orca 2 的核心创新在于其训练方式。它不仅仅是在一组提示和答案的数据集上进行微调,而是使用一个强大的“教师”模型(如GPT-4)进行训练。然而,Orca 2 并不仅仅是复制教师的最终答案,而是被展示了教师的内部推理过程。例如,对于一个复杂的数学问题,教师模型会提供一个分步解决方案,而 Orca 2 则学会了模仿这个过程。这使得它能够根据提示应用不同的推理策略,成为一个更灵活、更有能力的“学生”模型。