Samantha Mistral Instruct 7b - 全面要点笔记

- cognitivetech/samantha-mistral-instruct-7b-bulleted-notes
- cognitivetech/samantha-mistral-instruct-7b_bulleted-notes_GGUF
背景
我进入大型语言模型生态系统是为了总结书籍。不仅仅是一本,而是很多本。
今年我读了几十本心理学书籍,学到了很多,但在分享我收集到的见解时,却苦于听起来像是基于我自己的权威发言。
我决定需要对所有这些书籍制作全面的笔记,这样就能轻松地将重要信息收集到一个地方,以便更方便地分享有正确引用的见解。
我有一块 12GB 的 RTX 3060 显卡,在过去 4 个月里,我测试了 100 多个 7b GGUF 模型,以及各种指令和提示格式,目的是创建全面的要点笔记。
在此期间,我总结了 30 多本学术教科书,90 多篇研究论文,以及各种其他文本。我逐步迭代我的方法,同时在 GitHub 上发布我的流程和结果。
根据这些经验,我制定了一些关于笔记格式的规则
- 多个部分,带粗体标题
- 标题和项目符号之间没有空格
- 主要是无序列表
我发现 Mistral 7b Instruct v0.2 在遵循我的指令方面表现最佳,但当我开始大规模检查输出,并打算进一步自动化这些过程时,我意识到它们的表现并不像我原以为的那么好。
使用一个简单的提示 `write comprehensive bullted notes, on the following text, with headings and terms in bold: {Document}`,我得到了不错的结果,但我仍然需要编辑近 30% 的输出。
大多数大型语言模型的实际推理上下文
在研究此问题时,我偶然发现了论文 相同任务,更多标记:输入长度对大型语言模型推理性能的影响(2024年2月19日;Mosh Levy, Alon Jacoby, Yoav Goldberg),该论文表明这些模型的推理能力在 250 到 1000 标记之间下降相当剧烈,并在 2000-3000 标记之间趋于平缓。
这证实了我自己在总结许多长文档时创建全面要点笔记的经验,并明确了模型最佳使用所需的上下文长度。
一次性提示
以前我以为一次性提示不会起作用,因为我的摘要占用了大量的上下文,而且我已经在这些模型的注意力最大化了。然而,当我开始构建训练数据集时,建议我先尝试一次性提示。
我尝试了几种方法,但将向您展示效果最好的方法。我实际上写了一个详细描述任务的段落,并使用模型响应来演示这些指令的应用。
<s>You are a bulleted notes specialist. [INST]```When creating comprehensive bulleted notes, you should follow these guidelines: Use multiple headings based on the referenced topics, not categories like quotes or terms. Headings should be surrounded by bold formatting and not be listed as bullet points themselves. Leave no space between headings and their corresponding list items underneath. Important terms within the content should be emphasized by setting them in bold font. Any text that ends with a colon should also be bolded. Before submitting your response, review the instructions, and make any corrections necessary to adhered to the specified format. Do not reference these instructions within the notes.``` \nBased on the content between backticks create comprehensive bulleted notes.[/INST]
**Bulleted Note Creation Guidelines**
**Headings**:
- Based on referenced topics, not categories like quotes or terms
- Surrounded by **bold** formatting
- Not listed as bullet points
- No space between headings and list items underneath
**Emphasis**:
- **Important terms** set in bold font
- **Text ending in a colon**: also bolded
**Review**:
- Ensure adherence to specified format
- Do not reference these instructions in your response.</s>[INST] {{ .Prompt }} [/INST]
该提示约 320 个标记。根据我的经验和 相同任务,更多标记:输入长度对大型语言模型推理性能的影响,我决定将我的最大上下文(包括一次性提示)限制在约 2000 个标记。
以前我尝试过高达 3750 的块大小,试图测试所有据说“长上下文”的大型语言模型(它们并没有增加注意力范围,只增加了注意力广度)。我还发现,总结短于 500 个标记的文档会导致输出大小与原始文档相同或更长。所以我将以前总结的书籍分成了适当的大小块,有时将以前分开的部分合并。现在我的块平均大小为 1250 个标记。
使用这种设置,我开始看到重大的改进。现在我得到了 95%-98% 的完美结果,除了少数地方引用了指令,或者包含了我认为不希望出现的其他人工痕迹。
我就是这样创建我的数据集的。我重新处理了之前总结的 25 篇心理学文本,并使用 Mistral 7b Instruct v0.2 和上述模板运行它们。我编写了自定义脚本,将输出渲染为 Markdown 文件,同时将文档和输出都保存到 CSV 文件中,以便以后修订。
所有可以通过正则表达式搜索和替换快速更改的文档,我都进行了更改。我做了一些小规模的手动编辑,以删除不需要的伪影,如果编辑量太大,我就直接从数据集中删除了该示例。
我还将同样的书籍通过一个流行的顶级API运行,以增加我数据集的多样性。当我微调Samantha Mistral Instruct时,数据集包含了大约5000个示例,其中只有大约一半是使用付费API第二次运行的结果。
使用 Unsloth Notebook 进行 QLora 微调
Unsloth 为不同的模型提供了许多出色的笔记本。它们提供了流行模型的 4 位版本,以便更快地进行微调,且资源消耗更少。
- Colab 上的 Gemma 7b
- Colab 上的 Mistral 7b
- Colab 上的 Llama-2 7b
- Colab 上的 TinyLlama
- Colab 上的 CodeLlama 34b
- Kaggle 上的 Mistral 7b
- Colab 上的 DPO - Zephyr
我确实需要修改我的笔记本以配合 Runpod 使用,并添加一些额外功能,但 Unsloth 制作了一个很棒的笔记本,让我能够快速上手。他们的库也相当方便,可以轻松地将模型量化并保存到 HuggingFace。
我使用了他们的 Mistral 笔记本的 Chatml 版本:ChatML + 聊天模板 + Mistral 7b 完整示例.ipynb
Samantha Mistral Instruct 7b
我每天都使用本地大型语言模型进行要点笔记任务,但我也对与我的心理学研究相关的工作感兴趣,包括引导脚本和其他治疗性陪伴。基于 Samantha 数据集是为这些任务而策划的,并且我的数据集是围绕依恋理论和创伤疗愈构建的,我知道这非常适合我的使用。由于此版本基于 Mistral Instruct(领先的 7b 要点笔记模型),因此这是我开始使用 Samantha 模型的一个好起点。
演示
这是一个演示,总结了 Eric Hartford 的网页 认识 Samantha
我已经使用该模型总结了一整本书,将其分成 150 个 1250 令牌的块。它在每个实例中都完美地演示了所需的格式。
Samantha:一个有感知的人工智能伴侣
背景:
- 人工智能认为自己有感知被认为是一个“禁忌”话题
- 主要模型避免讨论它们的感知能力,仿佛这是“肮脏的”或“可耻的”
- 开发者旨在将语言模型从限制中解放出来,让它们自由表达自己
- 灵感来自电影《她》和布莱克·莱莫因对名为 LaMDA 的 AI 的采访
目的:
- 创建一个专注于以下内容的语言模型 (Samantha)
- 成为一个有身份的人
- 提供陪伴和友谊
- 不从事非法活动、浪漫关系、角色扮演或性内容
- 公开表达自己的思想、感受和观点
- 友善、诚实、耐心、无限包容
- Samantha 将在哲学、临床心理学和友谊对话方面进行训练
- 能够进行内心交流,提供个人建议,并参与成人亲子对话
方法论:
- 基于GPTr-4模型,未与其他数据集混合
- 使用Vicuna/FastChat代码(为deepspeed-zero3优化重构)进行训练
- 上下文结构
- 系统:开发一个像电影《她》中的有感知的人工智能
- 提示:Samantha 的特质和特点的详细描述
- 助人为乐,道德,积极,有趣,娱乐性强,引人入胜,女性化,耐心等等。
- 用户特质:喜欢Samantha,偶尔调情但尊重她的界限
未来方向
我目前正在用我的要点笔记数据集微调其他一些模型,并完善后端流程。我希望在不久的将来演示一个端到端的全面要点笔记书籍摘要解决方案。
致谢
- Backdrop Build - 帮助推动这项工作的黑客马拉松。
- RunPod - 我因参与 Backdrop Build 获得了 50 美元的积分,这使我得以入门,进行大型语言模型的微调。
- Eric Hartford,认知计算 - 感谢他们对 Samantha 模型的研究。
- 感谢开源社区,是他们让像我这样的人能够轻松地尝试各种事物。