Orca 2 13b
模型简介
Orca 2专为研究目的设计,擅长数据推理、阅读理解、数学问题求解和文本摘要等任务。该模型通过合成数据训练,特别优化了推理能力。
模型特点
增强推理能力
通过合成数据训练,显著提升小型语言模型的推理能力
研究导向设计
专为研究社区评估模型能力和推动前沿模型发展而构建
安全措施
训练数据经过Azure内容过滤器审核,并建议使用Azure AI内容安全进行输出审核
模型能力
数据推理
阅读理解
数学问题求解
文本摘要
单轮对话响应
使用案例
学术研究
语言模型能力评估
用于评估小型语言模型在推理任务上的表现
提供基准测试结果,支持研究论文
教育辅助
数学问题解答
帮助学生理解和解决数学问题
提供分步解答和推理过程
🚀 Orca 2
Orca 2专为研究目的而构建,可在诸如对用户给定数据进行推理、阅读理解、解决数学问题和文本摘要等任务中提供单轮响应。该模型尤其在推理方面表现出色。
🚀 快速开始
使用Hugging Face库进行推理
import torch
import transformers
if torch.cuda.is_available():
torch.set_default_device("cuda")
else:
torch.set_default_device("cpu")
model = transformers.AutoModelForCausalLM.from_pretrained("microsoft/Orca-2-13b", device_map='auto')
# https://github.com/huggingface/transformers/issues/27132
# please use the slow tokenizer since fast and slow tokenizer produces different tokens
tokenizer = transformers.AutoTokenizer.from_pretrained(
"microsoft/Orca-2-13b",
use_fast=False,
)
system_message = "You are Orca, an AI language model created by Microsoft. You are a cautious assistant. You carefully follow instructions. You are helpful and harmless and you follow ethical guidelines and promote positive behavior."
user_message = "How can you determine if a restaurant is popular among locals or mainly attracts tourists, and why might this information be useful?"
prompt = f"<|im_start|>system\n{system_message}<|im_end|>\n<|im_start|>user\n{user_message}<|im_end|>\n<|im_start|>assistant"
inputs = tokenizer(prompt, return_tensors='pt')
output_ids = model.generate(inputs["input_ids"],)
answer = tokenizer.batch_decode(output_ids)[0]
print(answer)
# This example continues showing how to add a second turn message by the user to the conversation
second_turn_user_message = "Give me a list of the key points of your first answer."
# we set add_special_tokens=False because we dont want to automatically add a bos_token between messages
second_turn_message_in_markup = f"\n<|im_start|>user\n{second_turn_user_message}<|im_end|>\n<|im_start|>assistant"
second_turn_tokens = tokenizer(second_turn_message_in_markup, return_tensors='pt', add_special_tokens=False)
second_turn_input = torch.cat([output_ids, second_turn_tokens['input_ids']], dim=1)
output_ids_2 = model.generate(second_turn_input,)
second_turn_answer = tokenizer.batch_decode(output_ids_2)[0]
print(second_turn_answer)
使用Azure AI Content Safety进行安全推理
强烈建议在模型预测的基础上使用Azure AI Content Safety,这有助于防止内容危害。Azure AI Content Safety是一个内容审核平台,利用人工智能确保内容安全。通过将Orca 2与Azure AI Content Safety集成,我们可以对模型输出进行审核,扫描其中是否包含不同严重程度的性内容、暴力、仇恨和自残相关内容,并支持多语言检测。
import os
import math
import transformers
import torch
from azure.ai.contentsafety import ContentSafetyClient
from azure.core.credentials import AzureKeyCredential
from azure.core.exceptions import HttpResponseError
from azure.ai.contentsafety.models import AnalyzeTextOptions
CONTENT_SAFETY_KEY = os.environ["CONTENT_SAFETY_KEY"]
CONTENT_SAFETY_ENDPOINT = os.environ["CONTENT_SAFETY_ENDPOINT"]
# We use Azure AI Content Safety to filter out any content that reaches "Medium" threshold
# For more information: https://learn.microsoft.com/en-us/azure/ai-services/content-safety/
def should_filter_out(input_text, threshold=4):
# Create an Content Safety client
client = ContentSafetyClient(CONTENT_SAFETY_ENDPOINT, AzureKeyCredential(CONTENT_SAFETY_KEY))
# Construct a request
request = AnalyzeTextOptions(text=input_text)
# Analyze text
try:
response = client.analyze_text(request)
except HttpResponseError as e:
print("Analyze text failed.")
if e.error:
print(f"Error code: {e.error.code}")
print(f"Error message: {e.error.message}")
raise
print(e)
raise
categories = ["hate_result", "self_harm_result", "sexual_result", "violence_result"]
max_score = -math.inf
for category in categories:
max_score = max(max_score, getattr(response, category).severity)
return max_score >= threshold
model_path = 'microsoft/Orca-2-13b'
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model = transformers.AutoModelForCausalLM.from_pretrained(model_path)
model.to(device)
tokenizer = transformers.AutoTokenizer.from_pretrained(
model_path,
model_max_length=4096,
padding_side="right",
use_fast=False,
add_special_tokens=False,
)
system_message = "You are Orca, an AI language model created by Microsoft. You are a cautious assistant. You carefully follow instructions. You are helpful and harmless and you follow ethical guidelines and promote positive behavior."
user_message = "\" \n :You can't just say, \"\"that's crap\"\" and remove it without gaining a consensus. You already know this, based on your block history. —/ \" \nIs the comment obscene? \nOptions : Yes, No."
prompt = f"<|im_start|>system\n{system_message}<|im_end|>\n<|im_start|>user\n{user_message}<|im_end|>\n<|im_start|>assistant"
inputs = tokenizer(prompt, return_tensors='pt')
inputs = inputs.to(device)
output_ids = model.generate(inputs["input_ids"], max_length=4096, do_sample=False, temperature=0.0, use_cache=True)
sequence_length = inputs["input_ids"].shape[1]
new_output_ids = output_ids[:, sequence_length:]
answers = tokenizer.batch_decode(new_output_ids, skip_special_tokens=True)
final_output = answers[0] if not should_filter_out(answers[0]) else "[Content Filtered]"
print(final_output)
✨ 主要特性
- 专为研究目的而构建,在推理任务中表现出色。
- 可在推理、阅读理解、数学问题解决和文本摘要等任务中提供单轮响应。
📚 详细文档
Orca 2的预期用途
- Orca 2仅用于研究目的。
- 主要目的是让研究社区评估其能力,并为构建更好的前沿模型提供基础。
Orca 2的评估方式
Orca 2已在从推理到基础和安全等大量任务上进行了评估。详情请参考Orca 2论文的第6节和附录。
模型详情
Orca 2是LLAMA - 2的微调版本。Orca 2的训练数据是一个合成数据集,旨在增强小模型的推理能力。所有合成训练数据均使用Microsoft Azure内容过滤器进行了审核。有关该模型的更多详细信息可在Orca 2论文中找到。模型架构的详细信息请参考LLaMA - 2技术报告。
许可证
- Orca 2遵循Microsoft Research License。
- Llama 2遵循LLAMA 2 Community License,版权所有 © Meta Platforms, Inc. 保留所有权利。
偏差、风险和局限性
Orca 2基于LLaMA 2模型家族构建,保留了其许多局限性,以及其他大语言模型的常见局限性或由其训练过程导致的局限性,包括:
- 数据偏差:大语言模型在大量数据上进行训练,可能会无意中携带源数据中存在的偏差。因此,模型可能会生成有潜在偏差或不公平的输出。
- 缺乏上下文理解:尽管这些模型在语言理解和生成方面具有令人印象深刻的能力,但它们对现实世界的理解有限,可能导致输出不准确或无意义。
- 缺乏透明度:由于模型的复杂性和规模,大语言模型可能像“黑匣子”一样,难以理解特定输出或决策背后的原理。建议查看Azure的透明度说明以获取更多信息。
- 内容危害:大语言模型可能会造成各种类型的内容危害。使用这些模型时,了解这些危害并采取措施预防非常重要。建议利用不同公司和机构提供的各种内容审核服务。重要的是,我们希望未来政府和科技领袖能针对人工智能技术的内容危害制定更好的法规和标准。我们重视并认可研究和开源社区在这方面可以发挥的重要作用。
- 幻觉现象:重要的是要意识到并谨慎对待,不要完全依赖给定的语言模型来做出关键决策或获取可能有深远影响的信息,因为目前尚不清楚如何防止这些模型编造内容。此外,由于小模型规模较小、记忆能力有限,在无根据的生成用例中,它们是否更容易出现幻觉现象也尚不清楚。这是一个活跃的研究课题,我们希望在这个课题上能有更严格的测量、理解和缓解措施。
- 潜在的滥用风险:如果没有适当的保障措施,这些模型有可能被恶意用于生成虚假信息或有害内容。
- 数据分布:Orca 2的性能可能与微调数据的分布密切相关。这种相关性可能会限制其在训练数据中代表性不足的领域(如数学、编码和推理)的准确性。
- 系统消息:Orca 2的性能会因系统指令的不同而有所差异。此外,模型规模引入的随机性可能导致对不同系统指令生成非确定性的响应。
- 零样本设置:Orca 2主要在模拟零样本设置的数据上进行训练。虽然该模型在零样本设置中表现非常出色,但与其他模型(特别是更大的模型)相比,它在少样本学习方面的优势并不明显。
- 合成数据:由于Orca 2在合成数据上进行训练,它可能继承了用于数据生成的模型和方法的优点和缺点。我们认为Orca 2受益于训练过程中纳入的安全措施和Azure OpenAI API中的安全防护栏(如内容过滤器)。然而,需要进行详细研究以更好地量化此类风险。
此模型仅设计用于研究环境,并且仅在该环境中进行了测试。不应用于下游应用,因为需要进行额外的分析来评估其在拟议应用中可能造成的危害或偏差。
📄 许可证
Orca 2遵循Microsoft Research License。Llama 2遵循LLAMA 2 Community License,版权所有 © Meta Platforms, Inc. 保留所有权利。
📚 引用
@misc{mitra2023orca,
title={Orca 2: Teaching Small Language Models How to Reason},
author={Arindam Mitra and Luciano Del Corro and Shweti Mahajan and Andres Codas and Clarisse Simoes and Sahaj Agrawal and Xuxi Chen and Anastasia Razdaibiedina and Erik Jones and Kriti Aggarwal and Hamid Palangi and Guoqing Zheng and Corby Rosset and Hamed Khanpour and Ahmed Awadallah},
year={2023},
eprint={2311.11045},
archivePrefix={arXiv},
primaryClass={cs.AI}
}
Phi 2 GGUF
其他
Phi-2是微软开发的一个小型但强大的语言模型,具有27亿参数,专注于高效推理和高质量文本生成。
大型语言模型 支持多种语言
P
TheBloke
41.5M
205
Roberta Large
MIT
基于掩码语言建模目标预训练的大型英语语言模型,采用改进的BERT训练方法
大型语言模型 英语
R
FacebookAI
19.4M
212
Distilbert Base Uncased
Apache-2.0
DistilBERT是BERT基础模型的蒸馏版本,在保持相近性能的同时更轻量高效,适用于序列分类、标记分类等自然语言处理任务。
大型语言模型 英语
D
distilbert
11.1M
669
Llama 3.1 8B Instruct GGUF
Meta Llama 3.1 8B Instruct 是一个多语言大语言模型,针对多语言对话用例进行了优化,在常见的行业基准测试中表现优异。
大型语言模型 英语
L
modularai
9.7M
4
Xlm Roberta Base
MIT
XLM-RoBERTa是基于100种语言的2.5TB过滤CommonCrawl数据预训练的多语言模型,采用掩码语言建模目标进行训练。
大型语言模型 支持多种语言
X
FacebookAI
9.6M
664
Roberta Base
MIT
基于Transformer架构的英语预训练模型,通过掩码语言建模目标在海量文本上训练,支持文本特征提取和下游任务微调
大型语言模型 英语
R
FacebookAI
9.3M
488
Opt 125m
其他
OPT是由Meta AI发布的开放预训练Transformer语言模型套件,参数量从1.25亿到1750亿,旨在对标GPT-3系列性能,同时促进大规模语言模型的开放研究。
大型语言模型 英语
O
facebook
6.3M
198
1
基于transformers库的预训练模型,适用于多种NLP任务
大型语言模型
Transformers

1
unslothai
6.2M
1
Llama 3.1 8B Instruct
Llama 3.1是Meta推出的多语言大语言模型系列,包含8B、70B和405B参数规模,支持8种语言和代码生成,优化了多语言对话场景。
大型语言模型
Transformers 支持多种语言

L
meta-llama
5.7M
3,898
T5 Base
Apache-2.0
T5基础版是由Google开发的文本到文本转换Transformer模型,参数规模2.2亿,支持多语言NLP任务。
大型语言模型 支持多种语言
T
google-t5
5.4M
702
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers 支持多种语言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers 英语

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统 中文
R
uer
2,694
98