基于LLaMA-2进行微调的FreeWilly2开源语言模型
FreeWilly2
是由Stability AI
基于Llama2 70B
所微调后发布的大语言模型
,该模型的部分推理能力
甚至已经超越
了openAI
的GPT-3.5
。截止至发稿前,该模型在HuggingFace
的开源语言模型排行榜
中位列榜首
,大部分语言模型加载工具
也正在处于积极适配中
。
看来开源语言模型终于要变天了,毕竟现在各种技术层出不穷,就像站长所说的,超越闭门造车不再open的oepnAI,只是时间问题。
模型描述
FreeWilly2是一个在Orca风格数据集上微调的Llama2 70B模型。Stability AI及其CarperAI实验室自豪地宣布FreeWilly1及其后继者FreeWilly2,这是两个强大的新型开放访问的大型语言模型(LLM)。这两个模型在各种基准测试中展现出了卓越的推理能力。FreeWilly1利用了原始的LLaMA 65B基础模型,并通过新的合成数据集使用标准Alpaca格式进行了精心微调。类似地,FreeWilly2利用了LLaMA 2 70B基础模型,其性能在某些任务上与GPT-3.5相比表现出色。
数据生成和收集
FreeWilly模型的训练直接受到了微软在其论文《Orca:从GPT-4的复杂解释跟踪中进行渐进学习》中开创的方法的启发。虽然我们的数据生成过程类似,但我们在数据来源上有所不同。
我们的数据集变种包含了60万个数据点(大约是原始Orca论文使用的数据集大小的10%),这些数据点是通过对以下由Enrico Shippole创建的高质量指令数据集进行语言模型提示而生成的:
通过这种方法,我们使用一个较简单的LLM模型生成了50万个示例,并使用一个更复杂的LLM模型生成了额外的10万个示例。为了确保公平比较,我们仔细筛选了这些数据集,并删除了来自评估基准的示例。尽管训练样本大小仅为原始Orca论文的十分之一(大大减少了与原始论文相比训练模型的成本和碳足迹),但由此产生的FreeWilly模型在各种基准测试中表现出色,验证了我们合成数据集的方法。
性能评估
为了对这些模型进行内部评估,我们使用了EleutherAI的lm-eval-harness,并加入了AGIEval。
这两个FreeWilly模型在许多方面表现出色,包括复杂推理、理解语言细微之处,并回答与专业领域(例如法律和数学问题解决)相关的复杂问题。
开放式LLM排行榜基准
这些FreeWilly模型的结果由Stability AI的研究人员进行评估,并在2023年7月21日由Hugging Face进行独立复现,并在他们的排行榜上发布。
GPT4ALL基准测试(全零样本)
AGI Eval(全零样本)
模型细节
开发者:Stability AI 模型类型:FreeWilly是一个在Llama2 70B上进行微调的自回归语言模型。 语言:英语 库:HuggingFace Transformers 许可证:经过微调的检查点(FreeWilly2)使用非商业性创作共享许可证(CC BY-NC-4.0)授权
训练数据集
FreeWilly2是在我们内部的Orca风格数据集上进行训练的。
训练过程
模型通过在前述数据集上进行有监督微调来进行学习,采用混合精度(BF16)进行训练,并使用AdamW进行优化。我们概述以下超参数:
数据集 | Batch Size | 学习率 | 学习率衰减 | Warm-up | 权重衰减 | Betas |
---|---|---|---|---|---|---|
Orca pt1 packed | 256 | 3e-5 | Cosine to 3e-6 | 100 | 1e-6 | (0.9, 0.95) |
Orca pt2 unpacked | 512 | 3e-5 | Cosine to 3e-6 | 100 | 1e-6 | (0.9, 0.95) |
使用和限制
预期用途
这些模型仅供研究使用,遵守CC BY-NC-4.0许可证。
限制和偏见
虽然上述数据集有助于将基础语言模型引导到“更安全”的文本分布,但并非所有偏见和有害内容都能通过微调来缓解。我们要求用户注意在生成的响应中可能出现的潜在问题。请不要将模型输出视为人类判断的替代品或真相来源。请负责任地使用它。
项目仓库
GitHub:stabilityai/FreeWilly2 · Hugging Face
模型部署
为了避免各个语言模型需要单独安装配置各种语言环境等复杂问题,站长推荐大家使用Text-Generation-WebUI
来加载模型。
你可以将Text-Generation-WebUI
理解为是一个通用的语言模型加载工具,在你部署成功之后,各主流的开源语言模型无需单独安装部署,仅需要将模型放置到Text-Generation-WebUI
的模型路径下即可使用,非常方便。
关于Text-Generation-WebUI
的安装部署以及使用教程,请查看如下文章。
注意:站长的电脑内存和显存条件都不足以能够支撑运行该模型,在加载时会遇到如下报错,大概意思为内存不足:您尝试分配 469762048 字节
,所以关于是否能够通过该语言模型加载器成功运行存疑,毕竟站长没有跑通,但理论上是可行的,如果有成功的小伙伴欢迎反馈一下,非常感谢。
2023-07-24 12:00:23 INFO:Loading FreeWilly2... Loading checkpoint shards: 48%|██████████████████████████ | 14/29 [23:36<25:18, 101.21s/it] 2023-07-24 12:24:05 ERROR:Failed to load the model. Traceback (most recent call last): File "D:\openai.wiki\oobabooga\text-generation-webui\server.py", line 68, in load_model_wrapper shared.model, shared.tokenizer = load_model(shared.model_name, loader) File "D:\openai.wiki\oobabooga\text-generation-webui\modules\models.py", line 79, in load_model output = load_func_map[loader](model_name) File "D:\openai.wiki\oobabooga\text-generation-webui\modules\models.py", line 149, in huggingface_loader model = LoaderClass.from_pretrained(Path(f"{shared.args.model_dir}/{model_name}"), low_cpu_mem_usage=True, torch_dtype=torch.bfloat16 if shared.args.bf16 else torch.float16, trust_remote_code=shared.args.trust_remote_code) File "D:\openai.wiki\oobabooga\installer_files\env\lib\site-packages\transformers\models\auto\auto_factory.py", line 493, in from_pretrained return model_class.from_pretrained( File "D:\openai.wiki\oobabooga\installer_files\env\lib\site-packages\transformers\modeling_utils.py", line 2903, in from_pretrained ) = cls._load_pretrained_model( File "D:\openai.wiki\oobabooga\installer_files\env\lib\site-packages\transformers\modeling_utils.py", line 3260, in _load_pretrained_model new_error_msgs, offload_index, state_dict_index = _load_state_dict_into_meta_model( File "D:\openai.wiki\oobabooga\installer_files\env\lib\site-packages\transformers\modeling_utils.py", line 682, in _load_state_dict_into_meta_model param = param.to(dtype) RuntimeError: [enforce fail at ..\c10\core\impl\alloc_cpu.cpp:72] data. DefaultCPUAllocator: not enough memory: you tried to allocate 469762048 bytes.
模型下载
官方下载
https://huggingface.co/stabilityai/FreeWilly2
网盘下载
关于此项目的模型,本站已为您下载并整理好。如果你不方便通过官网下载,可以使用本站所提供的网盘下载地址。
模型安装
在您下载完成模型之后,将名为FreeWilly2的模型文件夹移动至.\text-generation-webui\models
目录下即可。
模型加载
在你安装完成text-generation-webui
之后,在text-generation-webui
的Model选项卡界面
界面,左侧的Model
下拉框中选择FreeWilly2
,然后点击Load
按钮。
代码推理
官方提供了一些简短的代码,站长已经帮你写好了代码注释,如果你有相应的环境和硬件,那么你也可以使用以下代码片段开始与FreeWilly2
进行推理
。
import torch from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline # 从预训练模型中加载tokenizer tokenizer = AutoTokenizer.from_pretrained("stabilityai/FreeWilly2", use_fast=False) # 从预训练模型中加载model,并使用混合精度(float16)计算,降低CPU内存使用,自动分配设备 model = AutoModelForCausalLM.from_pretrained("stabilityai/FreeWilly2", torch_dtype=torch.float16, low_cpu_mem_usage=True, device_map="auto") # 系统提示 system_prompt = "### System:\nYou are Free Willy, an AI that follows instructions extremely well. Help as much as you can. Remember, be safe, and don't do anything illegal.\n\n" # 用户输入 message = "Write me a poem please" # 拼接完整的输入文本,包括系统提示和用户输入 prompt = f"{system_prompt}### User: {message}\n\n### Assistant:\n" # 使用tokenizer将输入文本编码为模型输入的张量 inputs = tokenizer(prompt, return_tensors="pt").to("cuda") # 使用模型生成输出文本,采用采样方式生成,使用top_p(nucleus sampling)策略设置概率阈值,max_new_tokens设置生成文本的最大长度 output = model.generate(**inputs, do_sample=True, top_p=0.95, top_k=0, max_new_tokens=256) # 将生成的张量文本解码为可读文本并输出 print(tokenizer.decode(output[0], skip_special_tokens=True))
FreeWilly应该使用以下提示格式:
### System: This is a system prompt, please behave and help the user. ### User: Your prompt here ### Assistant The output of FreeWilly2
为开放未来做出贡献
FreeWilly1和FreeWilly2在开放获取的大型语言模型领域树立了新的标准。它们显著推进了研究,增强了自然语言理解,并实现了复杂的任务。我们对这些模型将为人工智能社区带来无限可能感到兴奋,以及它们将激发的新应用。
我们要衷心感谢我们充满激情的研究人员、工程师和合作伙伴团队,他们卓越的努力和奉献使我们能够达到这一重要的里程碑。
请继续关注更多激动人心的发展,并开始探索FreeWilly所带来的难以置信的潜力!
- FreeWilly2的权重是原样发布的,而FreeWilly1的权重是对原始模型的增量发布的。这两个模型均在CC-BY-NC 4.0许可下发布。
- 包括ARC-Challenge等开放式LLM排行榜和GPT4ALL的性能基准。
- 正如OpenAI于2023年3月27日发布的“GPT-4技术报告”中所述。
- 正如微软研究部于2023年6月5日发布的论文“Orca: Progressive Learning from Complex Explanation Traces of GPT-4”中所述。
总结
唉,硬件不达标的吐槽,我已经懒的再吐槽了。
但是这个模型就目前在排行榜的参数排名来看,真的很顶,实际效果不知道能不能打。
或放大家可以通过LoRA方式调教一下FreeWilly2,使其更加适合国人。
评论 (0)