月度归档: 2023 年 12 月

  • LangChain 中的链

    链(chain)是 LangChain 中的一个重要概念,它可以将 LLM(大型语言模型)进行串联,或者将链与链之间串联起来。链大大简化了复杂应用程序的实现,并使其模块化,这也使调试、维护和改进应用程序变得更容易。

    基础的链:LLMChain

    最基础的链是 LLMChain,它接受 LLM、提示词模版等组件,然后返回 LLM 的回复。

    实跑代码

    以下是一个使用 LLMChain 的简单示例:

    from langchain.llms import OpenAI
    from langchain.prompts import PromptTemplate
    from langchain.chains import LLMChain
    
    # 创建 LLM 实例
    llm = OpenAI(temperature=0, openai_api_key="YOUR_API_KEY")
    
    # 创建提示词模版
    prompt = PromptTemplate(
        input_variables=["color"],
        template="What is the hex code of color {color}?",
    )
    
    # 创建 LLMChain 实例
    chain = LLMChain(llm=llm, prompt=prompt)
    
    # 基于链提问
    print(chain.run("green"))
    print(chain.run("cyan"))
    print(chain.run("magento"))

    输出:

    The hex code of color green is #00FF00.
    The hex code of color cyan is #00FFFF.
    The hex code for the color Magento is #E13939.

    从 LangChainHub 加载链

    LangChainHub 是一个托管各种 LangChain 组件的项目,其中包括链。您可以使用 load_chain 函数从 LangChainHub 加载链。

    from langchain.chains import load_chain
    import os
    
    # 设置 OpenAI API Key
    os.environ['OPENAI_API_KEY'] = "YOUR_API_KEY"
    
    # 加载链
    chain = load_chain("lc://chains/llm-math/chain.json")
    
    # 基于链提问
    chain.run("whats the area of a circle with radius 2?")

    输出:

    > Entering new LLMMathChain chain...
    whats the area of a circle with radius 2?
    Answer: 12.566370614359172
    > Finished chain.
    
    Answer: 12.566370614359172

    作业

    使用今天学到的用法,自己跑一下代码,然后将结果截图分享出来。

  • 关于LangChain中的Chain

    大家好,我是码农小王,今天给大家带来一篇关于LangChain中的Chain的通俗易懂的Blog。

    什么是Chain?

    Chain可以把多个LLM连接起来,实现链式调用。就像组装乐高积木一样,我们可以把不同的LLM块组装在一起,构建出复杂的AI系统。

    几种常见的Chain

    1. LLMChain

    这是最基础的Chain,它接受LLM和Prompt作为输入,返回LLM生成的回复。可以快速构建一个问答系统。

    1. QACoordinationChain

    这个Chain串联问答系统,当一个LLM无法回答时,将问题传递给下一个LLM,实现多个LLM协作。

    1. SearchChain

    这个Chain实现搜索功能,它将用户查询传给搜索LLM,获取回复后再传给答疑LLM生成完整回复。

    运行示例

    导入必要的模块:

    from langchain.llms import OpenAI
    from langchain.chains import *

    加载LLM:

    llm = OpenAI(openai_api_key='你的key') 

    构建一个LLMChain:

    chain = LLMChain(llm=llm, prompt=prompt)

    提问并获取回复:

    print(chain.run("人生的意义是什么?"))  

    总结

    通过Chain模块,LangChain实现了LLM的链式调用,使构建AI系统变得像组装积木一样简单。希望大家能trying more chains, happy langchaining!

    如果文章对你有帮助,请点赞支持哦!

  • Pearl – 一款用于生产环境的强化学习AI Agent库

    Pearl是一个由Meta应用强化学习团队开源的用于生产环境的强化学习AI Agent库。

    其主要特点包括:

    1. 模块化设计,可以自由组合不同的模块构建定制化的Agent。
    2. 支持动态Action空间,适用于实时推荐等需要动态生成Action的场景。
    3. 支持离线强化学习,可以利用日志数据进行训练。
    4. 支持智能探索策略,平衡探索和利用。
    5. 包含Contextual Bandit和全序列决策两种学习方式。
    6. 支持安全决策、历史汇总等功能。
    7. 内置数据增强的Replay Buffer。
    8. 相比其他库,Pearl在模块化、动态Action空间、智能探索等方面功能更强。
    9. 已应用于推荐系统、拍卖竞价等多个真实业务场景。
    10. Pearl是一个非常前沿和强大的强化学习工具库,值得研究和应用。
  • 深入了解ddz-ai:AI在斗地主游戏中的革新

    斗地主,这个在中国家喻户晓的扑克游戏,不仅是消遣娱乐的好方式,也成为了人工智能研究的一个有趣领域。最近,一位开发者在GitHub上公布了一个名为ddz-ai的项目,这个项目引入了一种先进的AI技术来玩斗地主游戏,并且它的表现已经可以媲美甚至超越人类玩家了。

    AI如何掌握斗地主?

    ddz-ai项目使用了一种被称为”多通道堆叠注意力Transformer结构”的系统。这听起来可能很复杂,但实际上,Transformer是目前自然语言处理领域最为强大的模型之一,它通过注意力机制来捕捉数据中的关键信息。开发者将这种机制应用于斗地主的牌局分析中,让系统能够理解不同的牌组合,并根据对手的出牌做出反应。

    ddz-ai的独特之处

    1. 创新的解决方案:ddz-ai通过孤立语假设和宽度优先搜索来解析牌面信息,从而能够洞察所有可能的牌组合,并针对实时的牌局状况制定策略。
    2. 定制化的模型设计:开发者构建了一个特别设计的模型,它能够编码多视角的特征,并通过堆叠注意力机制来更好地融合多牌信息。
    3. 复杂度得以降低:ddz-ai使用动态表和copy net结构来减少空间复杂度,简化了模型的推理过程。
    4. 减少信息不完全性的影响:在斗地主这样一个信息不完全的游戏中,ddz-ai使用完全信息进行重要性采样评估,以提高学习速率和效果。
    5. 考虑到时序信息:ddz-ai能够记录并分析对局历史,从而更准确地预测其他玩家的剩余牌和整个游戏的走势。
    6. 合理的策略制定:在游戏的叫地主阶段,AI会计算叫地主或不叫地主的胜率,以此来指导决策。

    如何运行ddz-ai?

    ddz-ai项目的运行环境很简单,只需要安装numpy和tensorflow两个包。有了这些,你就可以通过运行python train.py来训练你自己的AI模型了。此外,如果你对模型的细节感兴趣,你可以修改训练参数来控制学习过程。

    模型的测试与优化

    开发者目前公布的是一个使用actor-critic机制的模型,并预计未来基于PPO(一种强化学习算法)的版本会有更快的训练速度和更好的效果。模型在16GB RAM的CPU上训练了一周,经过数万轮自对抗训练,其表现已经略胜于一般人类玩家。

    未来展望

    尽管ddz-ai已经取得了不错的成绩,但开发者认为其潜力远未被完全挖掘——由于数据和计算资源的限制,系统的极限尚未到达。未来,开发者计划继续优化这个系统,并期待能够进一步提高AI在斗地主游戏中的表现。

    结论

    ddz-ai项目是一个令人兴奋的进步,它不仅推动了游戏AI的发展,也为我们提供了关于如何将复杂的AI模型应用于实际问题的宝贵见解。无论你是AI爱好者、斗地主高手还是仅仅是对新技术感兴趣的读者,ddz-ai都值得一试。这个项目不仅展示了AI的潜力,也让我们对未来充满期待——一个智能机器人可以在我们最喜爱的游戏中与我们并肩作战,甚至引领我们走向新的游戏高度。

    想要了解更多或者亲自体验ddz-ai的魅力吗?跳转到其GitHub页面 https://github.com/freefuiiismyname/ddz-ai ,开始你的AI斗地主之旅吧!

  • 强化学习算法里:孤立语假设 是指什么?

    强化学习算法中的孤立语假设是指在某些情况下,强化学习算法可以将观察到的环境状态视为完全独立的,即当前状态的转移和奖励只与当前状态有关,而与之前的状态无关。这个假设简化了强化学习问题的建模和求解过程,使得算法更加高效和可行。

    在强化学习中,智能体通过与环境的交互来学习最优策略。智能体在每个时间步选择一个动作,然后观察环境的状态转移和奖励信号。根据孤立语假设,智能体可以将当前状态的转移和奖励视为与之前的状态无关,只与当前状态有关。这意味着智能体可以忽略之前的状态信息,只关注当前状态的最优动作选择。

    这个假设的好处是简化了强化学习问题的建模和求解过程。由于只需要考虑当前状态的转移和奖励,算法的计算复杂度降低,使得算法更加高效和可行。然而,这个假设并不适用于所有情况,因为在某些问题中,之前的状态信息可能对当前状态的转移和奖励有影响。

    总结一下,强化学习算法中的孤立语假设是一种简化假设,它认为当前状态的转移和奖励只与当前状态有关,而与之前的状态无关。这个假设简化了问题的建模和求解过程,提高了算法的效率和可行性。


    Learn more:

    1. 什么是强化学习?- 强化学习简介 – AWS
    2. 平台设计与实现 – 天授 0.4.6.post1 文档
    3. 强化学习(Reinforcement Learning)_强跨学习的环境 包括状态吗-CSDN博客
  •  A Deep Dive into the Mixture of Experts Model

    Introduction:
    The Mixture of Experts model, also known as MoEs, has become a focal point in the field of open AI since the release of Mixtral 8x7B. In this blog post, we will explore the fundamental architecture, training methods, and various considerations required in practical applications of MoEs. Let’s dive in together!

    Overview:
    MoEs offer several advantages over dense models, including faster pre-training speed and faster inference speed compared to models with an equivalent number of parameters. However, they also have high memory requirements, as all expert models need to be loaded into memory. While there are challenges in fine-tuning, recent research on MoE instruction tuning has shown promising results.

    What is the Mixture of Experts (MoE) Model?
    Model size plays a crucial role in improving its quality. Training a larger model with fewer steps is often more effective than training a smaller model with more steps, given limited computational resources. The MoE model allows for pre-training at a significantly lower computational cost compared to traditional dense models. This means you can scale up your model or dataset significantly within the same computational budget. Particularly in the pre-training phase, MoE models can achieve the same performance level as their equivalent-sized dense models but in less time.

    So, what exactly is MoE? In the context of Transformer models, MoE consists of two main components:

    1. Sparse MoE Layer: This layer replaces the traditional dense feed-forward network (FFN) layer. The MoE layer consists of several “experts” (e.g., 8 experts), each representing an independent neural network. These experts are often FFNs, but they can also be more complex networks or even MoEs themselves, forming a hierarchical MoE structure.
    2. Gate Network or Router: This network determines which tokens are assigned to which expert. For example, in the given illustration, the token “More” is assigned to the second expert, while the token “Parameters” is assigned to the first network. It’s worth noting that a token can be assigned to multiple experts. Efficiently assigning tokens to the appropriate experts is one of the key considerations when using MoE technology. This router consists of a series of learnable parameters and is pre-trained along with the other parts of the model.

    The Switch Layer, as shown in the example from the Switch Transformers paper, represents the MoE layer.

    Advantages and Challenges:
    While MoEs offer advantages such as efficient pre-training and faster inference compared to dense models, they also present some challenges:

    1. Training: MoEs show high computational efficiency during the pre-training phase but can struggle to adapt to new scenarios during fine-tuning, often leading to overfitting.
    2. Inference: Although MoE models may contain a large number of parameters, only a fraction of them are used during inference, resulting in faster inference speed compared to dense models with the same number of parameters. However, this also poses a challenge as all parameters need to be loaded into memory, requiring significant memory resources. For example, for a MoE like Mixtral 8x7B, we need sufficient VRAM to support a dense model with 47B parameters (not 8x7B = 56B) since only the FFN layer is considered independent experts, while other parts of the model share parameters. Additionally, if each token uses only two experts, the inference speed (measured in FLOPs) is equivalent to using a 12B model (instead of 14B), as it achieves a 2x7B matrix multiplication, but some layers are shared (this will be further explained).

    MoEs: A Brief History:
    The concept of MoEs first appeared in the 1991 paper “Adaptive Mixture of Local Experts.” This idea, similar to ensemble methods, aims to manage a system consisting of different networks, with each network processing a portion of the training samples. Each individual network or “expert” has its strengths in different regions of the input space. The selection of these experts is determined by a gate network, and both the experts and the gate network are trained simultaneously.

    Between 2010 and 2015, two different research areas further contributed to the development of MoEs:

    1. Experts as Components: In traditional MoE structures, the system consists of a gate network and multiple experts. MoEs have been applied as a whole model in methods such as Support Vector Machines (SVM) and Gaussian Processes. Researchers like Eigen, Ranzato, and Ilya explored MoEs as part of deeper networks, allowing for a balance between large-scale and efficient models.
    2. Conditional Computation: Traditional networks pass all input data through each layer. During this time, Yoshua Bengio explored a method of dynamically activating or deactivating network components based on input tokens.

    These studies paved the way for the exploration of MoEs in the field of Natural Language Processing (NLP). In particular, the work of Shazeer et altranslated by Baoyu.io provides a comprehensive explanation of MoEs and their applications in the AI field. The blog post discusses the advantages of MoEs over dense models, such as faster pre-training speed and inference speed. It also highlights the challenges faced when working with MoEs, including high memory requirements and the need for fine-tuning.

    The post delves into the concept of MoEs, which involves replacing the dense feed-forward network (FFN) layer in Transformer models with a sparse MoE layer. This layer consists of multiple experts, each representing an independent neural network. A gate network or router is used to assign tokens to the appropriate experts. Efficient token assignment is a crucial consideration in MoE technology.

    While MoEs offer benefits like efficient pre-training and faster inference, they also present challenges during fine-tuning and require significant memory resources. The post provides insights into the historical development of MoEs, starting from the 1991 paper “Adaptive Mixture of Local Experts” and exploring subsequent research on experts as components and conditional computation.

    By providing a thorough understanding of the MoE model, the blog post serves as a valuable resource for AI professionals and researchers looking to explore the potential of MoEs in their work.

  • Quivr:AI的神奇助手

    在AI的世界里,我们总是追求创新和进步。而在现实世界中,人工智能(AI)的发展也在不断突破界限,给我们带来了无尽的可能性。今天,我们将探讨一个叫做Quivr的神奇AI工具,它能够帮助我们更好地理解和应用AI技术。

    🌟 Quivr:AI的神奇助手 🌟

    你一定好奇,Quivr是什么?Quivr是一款基于AI的工具,旨在帮助用户更好地理解和应用人工智能技术。它提供了一个丰富的文档库,涵盖了各种AI相关的主题,从基础概念到高级算法,应有尽有。让我们来深入了解Quivr的功能和特点。

    💡 Quivr的功能和特点 💡

    1️⃣ 丰富的文档库:Quivr提供了一个全面而详尽的文档库,其中包含了大量关于AI的文章和教程。无论你是初学者还是专业人士,你都可以在这里找到适合自己的内容。这些文档涵盖了从AI的基本概念到高级算法的各个方面,帮助用户建立起扎实的知识基础。

    2️⃣ 理解和应用:Quivr不仅仅是一个提供文档的平台,它还提供了实用的工具和示例代码,帮助用户更好地理解和应用所学的知识。通过Quivr,你可以学习如何使用不同的AI算法,如深度学习和强化学习,以解决实际问题。

    3️⃣ 互动学习:Quivr还提供了一个互动学习的环境,让用户可以与其他AI爱好者分享和讨论。你可以在这里提问问题、寻求帮助,还可以与其他用户交流经验和见解。这种互动学习的方式有助于加深对AI技术的理解,并且可以结识志同道合的朋友。

    4️⃣ 定制化学习路径:Quivr允许用户根据自己的需求和兴趣定制学习路径。你可以选择感兴趣的主题,按照自己的步调学习,而不受时间和地点的限制。这种个性化的学习方式将帮助你更高效地掌握AI技术。

    🚀 开始你的AI之旅 🚀

    现在,你可能会问:“如何开始使用Quivr?”很简单!你只需要访问Quivr的官方网站(https://brain.quivr.app/docs/intro.html),注册一个账号,就可以开始你的AI之旅了。

    在Quivr的文档库中,你可以找到关于AI基础知识的文章,了解AI的发展历程和基本概念。如果你是一个有经验的AI从业者,你可以深入研究高级算法和技术,并应用于实际项目中。

    除了文档,Quivr还提供了实用工具和示例代码,帮助你更好地理解和应用所学的知识。你可以通过实际动手的方式,将理论知识转化为实际应用。

    如果你在学习过程中有任何问题,不用担心!Quivr提供了一个互动学习的环境,你可以在这里与其他用户交流、讨论和分享。无论是寻求帮助还是分享你的见解,都可以在这个社区中找到答案和支持。

    😎 加入Quivr,与AI同行 😎

    Quivr是一个令人兴奋的AI工具,它为我们提供了一个全面和实用的学习平台。无论你是一个对AI感兴趣的初学者,还是一个有经验的AI从业者,Quivr都将帮助你更好地理解和应用人工智能技术。

    现在就加入Quivr,开始你的AI之旅吧!让我们一起探索和创造,与AI同行,开创更美好的未来!

    🌟 Quivr官方网站:https://brain.quivr.app/docs/intro.html 🌟

  • AppAgent介绍:一款革命性的多模态智能代理框架,用于操作智能手机应用程序

    📱 AppAgent介绍:一款革命性的多模态智能代理框架,用于操作智能手机应用程序

    你是否厌倦了手动浏览众多智能手机应用程序?想象一下拥有一个智能代理,可以无缝地操作智能手机应用程序,模拟人类般的交互。那么,你的愿望已经实现了,这就是划时代的AppAgent!

    🔖 AppAgent是什么?

    AppAgent是一种基于LLM的全新多模态智能代理框架,专为操作智能手机应用程序而设计。这一创新性框架通过简化的操作空间,使代理能够执行各种操作,如点击和滑动。

    与传统方法需要对系统进行后端访问不同,AppAgent可以独立运行,适用于各种应用程序。其多功能性使其能够高效地导航和使用不同的应用程序。

    🎯 AppAgent如何工作?

    AppAgent的核心功能是其创新的学习方法。代理可以使用两种主要方法来学习操作新的应用程序:自主探索和人类演示学习。

    1️⃣ 自主探索:
    在这种方法中,代理会自主探索应用程序,尝试不同的操作并观察结果。通过这个试错过程,它建立了一个知识库,帮助它在多个应用程序上执行复杂任务。

    2️⃣ 人类演示学习:
    另一种方法是代理通过观察人类演示来学习。通过观察用户与应用程序的交互,它学习必要的操作,并建立对应用程序功能的全面理解。

    📽️ 演示视频:

    通过演示视频最能展示AppAgent的功能。在以下视频中,你可以亲眼见证AppAgent的强大能力:

    1️⃣ 在X(Twitter)上关注用户:
    观看AppAgent在部署阶段轻松地关注X(Twitter)上的用户。视频展示了代理高效完成任务的能力,将你从重复的手动操作中解放出来。

    2️⃣ CAPTCHA实验:
    AppAgent在成功解决CAPTCHA挑战方面展现出其智能的一面。目睹代理如何绕过CAPTCHA验证,证明其高级功能。

    🚀 快速入门指南:

    准备好探索AppAgent的世界了吗?按照以下简单步骤开始:

    🔹 步骤1:先决条件

    • 确保你有启用USB调试的Android设备。
    • 在计算机上下载并安装Android Debug Bridge(adb)。
    • 通过USB将设备连接到计算机。
    • 克隆AppAgent存储库并安装必要的依赖项。

    🔹 步骤2:配置代理

    • AppAgent依赖于多模态模型,如gpt-4-vision-preview,以做出决策。
    • 修改配置文件(config.yaml),包括你的OpenAI API密钥,并调整请求间隔。

    🔹 步骤3:探索阶段

    • AppAgent的探索阶段提供两个选项:自主探索和人类演示学习。
    • 在自主探索中,代理独立探索应用程序,通过试错方式学习。
    • 从人类演示学习中,代理观察用户交互并相应地建立知识。

    🔹 步骤4:部署阶段

    • 一旦完成探索阶段,AppAgent即可投入部署。
    • 利用代理的知识库在各种应用程序上高效执行复杂任务。

    📝 待办事项:

    AppAgent不断发展,未来将有令人期待的更新。敬请关注即将推出的功能和改进,包括:

    • 更强大的学习算法,以更快地适应新的应用程序
    • 与语音助手的集成,实现无缝语音命令
    • 对其他平台和操作系统的支持

    📚 引用:

    如果你在研究或开发中发现AppAgent有用,请引用我们的工作。以下是引用的详细信息:

    作者:Chi Zhang、Zhao Yang、Jiaxuan Liu、Yucheng Han、Xin Chen、Zebiao Huang、Bin Fu、Gang Yu(通讯作者)

    🎉 加入AppAgent革命!

    告别繁琐的手动应用操作,拥抱智能手机交互的未来。通过AppAgent,你的智能手机体验将彻底改变。准备好释放智能手机的全部潜力吧,和AppAgent一起!

    🌐 探索AppAgent的GitHub存储库:
    GitHub – AppAgent

    🙌 为AppAgent社区做出贡献:
    无论你是人工智能爱好者、开发者还是研究人员,我们邀请你加入AppAgent社区。分享你的经验,为框架的改进做出贡献,成为智能手机应用操作革命的一部分。

    让AppAgent成为你的虚拟助手,简化你的智能手机体验,让你在应用程序上做更多事情!📲💪

  • LLM 大语言模型的输出是一段文本,如何计算误差?

    对于输出文本的大型语言模型(如GPT系列模型),计算误差通常涉及到预测下一个词或者一系列词的概率分布,并使用特定的损失函数来衡量模型预测与真实值之间的差异。下面是详细步骤:

    • 模型输出:
    • 模型在给定前文(或上下文)的条件下输出一个概率分布,这个分布表示下一个词是词汇表中每个词的概率。
    • 真实标签:
    • 真实标签通常是一个“one-hot”编码的向量,表示实际出现的下一个词。在这个向量中,实际单词的位置为1,其余位置为0。
    • 损失函数:
    • 对于语言模型,常用的损失函数是交叉熵损失(Cross-Entropy Loss)。这个函数衡量的是模型输出的概率分布和真实标签之间的差异。具体来说,交叉熵损失计算的是模型输出的概率分布的负对数似然在真实单词位置的值。
    • 计算步骤:
    • 对于单个训练样本,如果模型对于下一个词的预测概率分布是 ( P ),真实的单词在词汇表中的位置是 ( y ),则交叉熵损失 ( L ) 可以表示为: [ L=−∑iyi​log(Pi​) ] 在实际操作中,因为 ( y ) 是一个one-hot向量,上式中只有真实单词对应位置的项会有贡献,所以损失简化为: [ L=−log(Py​) ] 其中 ( P_y ) 是模型预测的真实单词的概率。
    • 批量处理:
    • 在处理大量数据时,通常会计算一批数据的平均损失。这是通过对批中每个样本的损失进行求和,然后除以批中样本的数量得到的。
    • 反向传播:
    • 使用损失函数关于模型参数的梯度,来更新模型的参数,以此减少预测误差。

    通过这种方式,即使输出是文本,语言模型也能够在训练过程中通过优化损失函数来减少预测误差,提高对下一个词或一系列词预测的准确性。在实际应用中,模型还会被评估其在多样化的文本生成、理解或其他NLP任务上的性能,这些任务可能需要额外的评估指标,如BLEU、ROUGE或者Perplexity等。

  • ZEPHYR: 直接提取LM对齐

    摘要
    我们的目标是创建一个更小、与用户意图对齐的语言模型。先前的研究表明,对更大的模型应用蒸馏监督微调(dSFT)可以显著提高任务准确性;然而,这些模型没有对齐,即它们无法很好地响应自然提示。为了提取这个特性,我们尝试使用来自AI反馈(AIF)的偏好数据。我们从一个由教师模型排名的输出数据集开始,应用蒸馏直接偏好优化(dDPO)来学习一个具有显著改善意图对齐的聊天模型。这种方法只需要几个小时的训练时间,在微调过程中不需要任何额外的采样。最终结果ZEPHYR-7B在7B参数模型的聊天基准测试中取得了新的最佳表现,并且不需要人工标注。特别是,在MT-Bench上的结果显示,ZEPHYR-7B超过了基于RLHF的开放访问模型LLAMA2-CHAT-70B。该系统的代码、模型、数据和教程可在 https://github.com/huggingface/alignment-handbook 上获得。

    引言
    近年来,小型、开放的大型语言模型(LLM)的能力大大提高,从早期的GPT-2样式模型(Wang&Komatsuzaki,2021)到准确而紧凑的模型(Touvron等,2023;Penedo等,2023;Jiang等,2023),这些模型训练的令牌数量远远超过了Chincilla缩放定律建议的“计算优化”数量。此外,研究人员已经证明,通过使用专有模型进行蒸馏监督微调(dSFT)可以进一步提高这些模型的准确性(Taori等,2023)。在这种方法中,更强大的教师模型的输出被用作学生模型的监督数据。

    蒸馏已经被证明是改善各种不同任务上开放模型的有效工具(Chiang等,2023);然而,它并没有达到教师模型的性能(Gudibande等,2023)。用户注意到这些模型不是“意图对齐”的,即它们的行为不符合人类用户的偏好。这种特性经常导致无法正确回答查询的输出。

    意图对齐一直很难量化,但最近的研究已经导致了MT-Bench(Zheng等,2023)和AlpacaEval(Li等,2023)等针对这种行为的基准的发展。这些基准产生的分数与模型输出的人类评级密切相关,并确认了专有模型的质量优于使用人工反馈训练的开放模型,后者又优于使用蒸馏训练的开放模型。这促使人们对对齐进行仔细的人工反馈收集,但这往往需要巨大的成本,比如LLAMA2-CHAT(Touvron等,2023)。

    在这项工作中,我们考虑了通过蒸馏完全对齐一个小型开放LLM的问题。主要步骤是利用来自教师模型集合的AI反馈(AIF)作为偏好数据,并将蒸馏直接偏好优化作为学习目标(Rafailov等,20231. 引言

    近年来,大型语言模型(LLM)在自然语言处理领域取得了巨大的进展。从早期的GPT-2模型到如今更准确、更紧凑的模型,这些模型通过训练来理解和生成自然语言文本。然而,尽管这些模型在许多任务上表现出色,但它们并不总是能够完全理解用户的意图。

    为了提高模型在特定任务上的准确性和对用户意图的理解能力,研究人员提出了一种新的方法——直接提取LM对齐。这种方法通过蒸馏监督微调(dSFT)和偏好数据优化(dDPO)来训练一个与用户意图对齐的小型语言模型。

    本文将详细介绍ZEPHYR项目,它是一个直接提取LM对齐的模型,旨在创建一个小型语言模型,它能够更好地理解用户的意图并提供准确的回答。

    2. 直接提取LM对齐的方法

    在传统的监督学习中,通常使用人工标注的数据来训练模型。然而,这种方法需要耗费大量的时间和人力成本,并且对于大规模的语言模型来说,准备数据集是一项巨大的挑战。

    为了解决这个问题,研究人员提出了一种直接提取LM对齐的方法。该方法利用来自AI反馈(AIF)的偏好数据,通过蒸馏直接偏好优化(dDPO)来训练模型。具体而言,该方法从一个由教师模型排名的输出数据集开始,通过优化目标函数来训练一个与用户意图对齐的聊天模型。与传统的监督学习相比,直接提取LM对齐的方法具有以下优势:

    • 更高的效率:直接提取LM对齐的方法只需要几个小时的训练时间,而不需要额外的采样过程。
    • 更好的意图对齐:通过使用偏好数据优化,模型能够更好地对齐用户的意图,从而提供更准确的回答。
    • 无需人工标注:与传统的监督学习不同,直接提取LM对齐的方法不需要人工标注的数据,从而减少了人力成本。

    3. ZEPHYR-7B模型的实验结果

    ZEPHYR项目的目标是创建一个小型语言模型,它能够在特定任务上表现出与人类对齐的准确性。为了评估ZEPHYR模型的性能,研究人员使用了MT-Bench基准测试数据集,并与其他模型进行了比较。

    实验结果表明,ZEPHYR-7B模型在MT-Bench数据集上取得了优秀的表现,超过了基于RLHF的开放访问模型LLAMA2-CHAT-70B。与其他开放模型相比,ZEPHYR-7B模型在意图对齐方面具有明显的优势,这意味着它能够更好地理解用户的意图并提供准确的回答。

    4. 结论

    本文介绍了ZEPHYR项目的直接提取LM对齐方法,并展示了实验结果。通过使用偏好数据优化和蒸馏直接偏好优化,ZEPHYR-7B模型在意图对齐方面取得了优异的性能,超越了其他开放模型。这证明了直接提取LM对齐方法的有效性。

    ZEPHYR项目的成功背后有几个关键因素。首先,使用AI反馈数据作为偏好数据,能够更好地捕捉用户的意图和偏好。这种数据的使用使得模型能够更好地对齐用户的意图,从而提供更准确的回答。

    其次,蒸馏直接偏好优化的方法能够在短时间内训练出高性能的模型。与传统的监督学习相比,这种方法不需要人工标注的数据,大大减少了训练的时间和成本。

    最后,ZEPHYR项目的成功离不开团队的努力和创新精神。研究人员通过不断探索和改进模型的训练方法,取得了令人瞩目的成果。

    虽然ZEPHYR项目取得了显著的成果,但仍有一些挑战需要克服。例如,如何进一步提高模型在意图对齐方面的性能,以及如何应对不同领域和语境下的挑战,都是需要进一步研究和探索的问题。

    总之,ZEPHYR项目的直接提取LM对齐方法为创建小型语言模型提供了一种有效的途径。通过利用AI反馈数据和蒸馏直接偏好优化,ZEPHYR-7B模型在意图对齐方面取得了显著的进展。这为未来的研究和应用提供了新的思路和方法。我们期待着在实际应用中看到这种方法的进一步发展和应用。

    💡 如果你对ZEPHYR项目感兴趣,想了解更多关于该项目的代码、模型、数据和教程,可以访问 https://github.com/huggingface/alignment-handbook  获取更多信息。

    💡 欢迎留言分享你对ZEPHYR项目的看法和想法!我们期待与您的交流和讨论!

    (本文是基于论文《ZEPHYR: Aligning Large Language Models with Direct Extraction of LM Alignments》的改编,并结合个人理解进行了阐述。)

  • 向着全新的端到端人工智能驱动全球天气预报系统迈进

    摘要

    天气预报系统对科学和社会都至关重要,人工智能(AI)在中期天气预报中已经取得了重大成就。然而,现有的基于AI的天气预报模型仍然依赖于传统的数值天气预报(NWP)系统产生的分析或再分析产品作为预测的初始条件,无法成为完全独立的系统。作为端到端全球天气预报系统的重要组成部分,数据同化在生成预测的初始状态方面至关重要。本文介绍了一种基于AI的数据同化模型,即Adas,用于全球天气变量,它通过学习从背景和稀疏观测中生成分析。与现有的同化方法不同,Adas采用门控卷积模块处理稀疏观测,并采用门控交叉注意力模块高效捕捉观测和背景之间的相互作用,这些模块由置信矩阵引导,表示观测的可用性和质量。然后,我们将Adas与先进的基于AI的天气预报模型(即FengWu)结合起来,构建了第一个端到端的基于AI的全球天气预报系统:FengWu-Adas。实验证明,Adas可以通过一年的模拟将模拟的全球观测同化到由AI生成的背景中,并稳定地生成高质量的分析。基于生成的分析,FengWu-Adas在七天的天气预报中表现出了高超的性能,优于集成预报系统(IFS)。

    关键词:数据同化、人工智能、中期天气预报、深度学习

    引言

    在人工智能(AI)的推动下,特别是深度学习技术的成熟和进步,科学智能正在迅速发展,以利用AI促进科学研究和发现。在大气科学领域,AI在各个领域取得了显著的成就,如后处理和偏差校正、降尺度、降水即时预报、气候预测和中期天气预报等。一些基于AI的模型与欧洲中期天气预报中心(ECMWF)的集成预报系统(IFS)相比,通常在重分析数据集上进行训练,并且具有较低的计算成本和更容易的操作部署。尽管存在一些缺点,如预报平滑性和偏差漂移,但AI方法在天气预报中显示出了数据驱动建模的巨大潜力,为气象预报提供了一种新的范式。

    尽管取得了重大进展,但前面提到的基于AI的天气预报模型仍然需要传统NWP系统中数据同化过程产生的分析产品进行预测。具体而言,数据同化旨在获得地球系统真实状态的最佳估计(即分析),并为天气预报提供准确的初始状态,从而提高预报性能。在一个自给自足的全球天气预报系统中,数据同化是确保系统长期稳定性的关键组成部分。观测作为数据同化的重要信息源,因为它们是大气真实状态的最接近表示。天气预报系统对科学和社会来说至关重要。在中期天气预报中,应用人工智能(AI)已取得了重大成就。然而,现有的基于AI的天气预报模型仍然依赖传统数值天气预报(NWP)系统生成的分析或再分析产品作为预测的初始条件,无法构建完全独立的系统。数据同化是端到端全球天气预报系统中至关重要的一部分,它在生成预测的初始状态方面起着关键作用。本文提出了一种基于AI的数据同化模型,命名为Adas,用于全球天气变量。该模型通过学习从背景和稀疏观测中生成分析。与现有的同化方法不同,Adas采用门控卷积模块处理稀疏观测,并采用门控交叉注意力模块高效捕捉观测和背景之间的相互作用。这些模块受置信矩阵引导,以表示观测的可用性和质量。随后,我们将Adas与先进的基于AI的天气预报模型FengWu结合,构建了第一个端到端的基于AI的全球天气预报系统:FengWu-Adas。实验结果表明,Adas能够通过一年的模拟将模拟的全球观测与由AI生成的背景同化,并稳定地生成高质量的分析。基于生成的分析,FengWu-Adas在七天的天气预报中表现出卓越的性能,优于集成预报系统(IFS)。

    在人工智能的推动下,科学智能正在迅速发展。大气科学领域的人工智能已经在多个领域取得了显著成就,包括后处理和偏差校正、降尺度、降水即时预报、气候预测和中期天气预报等。与欧洲中期天气预报中心(ECMWF)的集成预报系统(IFS)相比,一些基于AI的模型通常在重分析数据集上进行训练,具有更低的计算成本和更容易的操作部署。尽管这些方法存在一些缺点,如预报平滑性和偏差漂移,但它们显示了数据驱动建模在天气预报中的巨大潜力,为气象预报带来了一种新的范式。

    数据同化是确保天气预报系统长期稳定性的关键组成部分。它旨在获得地球系统真实状态的最佳估计(即分析),并为天气预报提供准确的初始状态,从而提高预报性能。观测是数据同化的重要信息源,因为它们最接近大气真实状态。早期的初始条件是通过将观测插值到状态空间的网格点上来获得的。现代数据同化技术通常通过将观测与短期天气预报的模型预测结果进行整合来实现。

    尽管在AI驱动的天气预报模型方面取得了重要进展,但仍然需要传统NWP系统中数据同化过程生成的分析产品。因此,本文提出了Adas模型来解决这个问题。Adas模型通过学习从背景和稀疏观测中生成分析,采用了一些创新的门控卷积模块和门控交叉注意力模块,来处理稀疏观测和背景之间的相互作用。通过引入置信矩阵,Adas模型能够有效地反映观测的可用性和质量。通过将Adas模型与先进的基于AI的天气预报模型FengWu相结合,我们构建了全新的端到端基于AI的全球天气预报系统:FengWu-Adas。

    FengWu-Adas系统的性能经过了实验证实。通过一年的模拟,Adas模型可以将模拟的全球观测与由AI生成的背景同化,并稳定地生成高质量的分析结果。基于这些分析结果,FengWu-Adas系统在七天的天气预报中表现出了卓越的性能,超过了传统的集成预报系统(IFS)。

    这个全新的端到端基于AI的全球天气预报系统具有重要的科学和实际意义。它不仅能够提供更准确、更可靠的天气预报,还能够减少对传统NWP系统的依赖,并降低运行成本。此外,该系统还为天气预报领域的进一步研究提供了新的思路和方法。


    总结起来本文介绍了一种基于AI的数据同化模型Adas,以及如何将其与先进的基于AI的天气预报模型FengWu相结合,构建了全新的端到端基于AI的全球天气预报系统:FengWu-Adas。实验证明,该系统在天气预报性能方面表现出色,超过了传统的集成预报系统。这个系统的建立对于改进天气预报准确性和可靠性具有重要意义,并为未来的天气预报研究提供了新的方向。

    希望通过这个全新的端到端基于AI的全球天气预报系统,我们能够更好地了解和预测天气,为社会提供更准确的天气信息,从而更好地应对自然灾害和保护人们的生命财产安全。

    如果您对这个全新的基于AI的全球天气预报系统感兴趣,想要了解更多细节,请阅读原文:链接到原文

    谢谢阅读!🌦️🌍📚

  • 评估大型语言模型在多智能体协作环境中的协调能力

    简介:

    🌟 当今人工智能研究的重要目标之一是开发能够与人类和其他系统有效协作的智能体。大型语言模型(LLM)以其理解、生成和解释人类语言的能力而备受关注,成为开发此类智能体的有力候选。在本研究中,我们旨在构建并评估使用LLM构建的智能体在各种协调场景中的效果。我们引入了LLM-Coordination(LLM-Co)框架,专门设计用于使LLM能够玩协调游戏。通过评估,我们深入研究了LLM在心智理论、情境推理、持续协调、对合作伙伴的稳健性以及显性协助等方面的能力。研究结果突显了LLM在复杂协调环境中的潜力,并揭示了LLM在构建用于多智能体协作的强大现实世界智能体方面的潜力。

    理解多智能体协调的需求:

    🌟 人类在日常生活和工作中经常进行各种协调任务,包括烹饪等平凡活动以及搜救等更重要的任务。为了帮助人类完成乏味或危险的任务,开发能够与人类或其他自主系统协调的智能体至关重要。大型语言模型最近在复杂环境中展示了解决问题和完成任务的能力,展示了高级推理能力和心智理论的迹象。在本研究中,我们旨在探索大型语言模型在解决需要多智能体协调的任务时的推理能力。

    评估过程:

    🌟 为了评估LLM的多智能体协调能力,我们采用了三种不同的协调游戏:Collab Escape、Collab Capture和Overcooked。在这些游戏中,智能体需要协调行动以实现特定目标。为了使LLM能够理解和玩这些游戏,我们引入了LLM-Coordination框架。该框架为智能体提供了环境的上下文状态信息、可行动作以及解释实时执行的能力。

    测试心智理论和情境推理:

    🌟 在评估持续协调能力之前,我们首先测试了LLM的心智理论(ToM)和情境推理能力。心智理论使模型能够推断他人的意图和信念,而情境推理则使模型能够将这些推断与环境的上下文情境联系起来。我们设计了LLM-ToM-Reasoning测试集,其中包括来自我们协调游戏的情景。该测试集要求LLM根据合作伙伴的意图和环境的当前状态进行推理,提供最佳的下一步行动。评估涉及不同LLM(包括GPT-4、GPT-3.5-turbo、Vicuna-33B和Vicuna-13B)的比较。结果表明,GPT-4在性能上超过其他LLM,达到了接近人类水平的分数。

    评估持续协调和对合作伙伴的稳健性:

    🌟 为了评估持续协调能力,我们专注于使用GPT-4的LLM-Co智能体,该智能体展现出强大的心智理论和情境推理能力。我们将LLM-Co智能体的性能与强化学习(RL)基准进行比较,后者是AI-AI游戏中的黄金标准。我们还通过在协调环境中尝试不同的合作伙伴来评估智能体对不同合作伙伴行为的稳健性。评估结果显示,LLM-Co智能体在AI-AI和AI-human代理游戏中的表现不亚于甚至优于RL基准,而且无需进行任何微调。此外,LLM智能体在自然语言中提供详细解释其行动的能力方面表现出色。

    协调任务中的主动协助:

    🌟 在协调任务中,提供对合作伙伴的显性协助能力至关重要。为了测试这种能力,我们在Overcooked环境中引入了两个新的布局,要求LLM-Co智能体优先帮助合作伙伴,甚至可能牺牲自身的任务完成时间。通过实验和评估,我们发现LLM-Co智能体能够确定协助合作伙伴的正确策略。然而,在需要提示协助的情况下,它们需要以自然语言的“协助指令”来引导其关注。结果表明,LLM-Co智能体在这些新布局中的表现优于基准模型。

    主要贡献:

    🌟 在我们的研究中,我们做出了以下几个重要贡献:

    1️⃣ 发展了LLM-Coordination框架,为大型语言模型提供了在实时场景中玩长期协调游戏所需的工具和环境信息。

    2️⃣ 引入了LLM-ToM-Reasoning测试集,专门设计用于评估大型语言模型的心智理论和情境推理能力。

    3️⃣ 通过LLM-Co智能体的评估,展示了它们在全面的多轮协调场景中与强化学习基准的性能。

    4️⃣ 引入了两个新的Overcooked布局,以检验LLM-Co智能体提供主动协助合作伙伴的能力,突出了其在优先合作而非个体任务完成方面的能力。

    结论:

    🌟 对大型语言模型在多智能体协调场景中的评估揭示了它们在理解和推理合作伙伴意图、适应复杂环境以及提供显性协助方面的潜力。LLM-Coordination框架与LLM的优势相结合,使得能够开发能够熟练进行多智能体协调的现实世界智能体成为可能。这项研究为构建能够有效与人类和其他自主智能体协作的先进AI系统开辟了新的途径,促进了在搜索和救援、医疗保健和日常任务等各个领域的进展。本研究的发现为AI研究中增强智能体协调能力的持续努力做出了贡献。

    🎉🎉🎉 结束 🎉🎉🎉


  • BianQue: 平衡LLMs的问询与建议能力,通过ChatGPT打磨的多轮健康对话

    近年来,大型语言模型(LLMs)如ChatGPT、ChatGLM、ChatDoctor等在单轮对话中提供广泛而全面的健康建议方面表现出色。然而,用户在单轮对话中提供的有限信息导致生成的建议缺乏个性化和针对性,需要用户自行选择有用的部分。这主要是因为缺乏参与多轮问询的能力。在现实世界的医疗咨询中,医生通常会采用一系列迭代性的询问,全面了解患者的病情,以便随后提供有效和个性化的建议。我们将这种能力定义为链式问询(CoQ)。

    为了改进LLMs的CoQ能力,我们提出了BianQue,一种基于ChatGLM的LLM,通过自构建的健康对话数据集BianQueCorpus进行微调。该数据集包含了多轮问询和ChatGPT打磨的健康建议。实验结果表明,BianQue能够同时平衡问询和健康建议的能力,将有助于推动LLMs在积极健康领域的研究和应用。

    1. 引言

    近年来,大型语言模型(LLMs)如ChatGPT、LLaMA、ChatGLM等已广泛应用于各个领域。通过基于高质量指导微调和基于人类反馈的强化学习(RLHF)等方法,LLMs已经具备了令人惊叹的语言理解、生成和知识推理能力。用户对LLMs出色的建议能力感到惊讶。

    然而,LLMs在医学、心理学、教育等应用场景中重要的“问询”能力仍然不足。在与这些LLMs(如ChatGPT2、ChatGLM3、SparkDesk4)进行医疗对话时,它们还没有进行多轮问询的能力。上述LLMs通常基于用户提供的单轮指令,提供合理且普遍适用的建议。然而,在现实世界中,医生通常需要与患者进行多轮对话,以提供有针对性的建议。在用户咨询过程中,医生在前9轮对话中提出不同的问题,以了解宝宝的具体情况。上述多轮问询过程可以定义为链式问询(CoQ)。我们发现,目前的LLMs缺乏CoQ的能力,这是因为在指令微调阶段和RLHF阶段缺乏多轮问询的训练数据。研究人员在构建指令和答案时,一方面忽略了多轮对话历史,另一方面,答案通常是建议而不是问题。


    目前,健康领域对LLMs的研究主要集中在评估现有模型的性能、构建适当的数据集和微调指令方面。Singhal等人提出了医学问答基准MultiMedQA,用于评估LLMs的临床知识问答能力。Li等人构建了真实的医生-患者对话数据集HealthCareMagic-100k,并用它来微调ChatDoctor。类似的健康LLMs相继发布,如BenTsao、ChatGLM-6B-Med、DoctorGLM、Med2. BianQue的设计与实现

    为了提升LLMs的CoQ能力,我们设计了BianQue,一种基于ChatGLM的LLM。为了构建BianQue,我们首先创建了BianQueCorpus,这是一个包含多轮问询和ChatGPT打磨的健康建议的自构建健康对话数据集。BianQueCorpus的构建过程包括以下步骤:

    2.1 数据收集与预处理

    我们收集了大量的医疗对话数据,并进行预处理以清理和标准化数据。数据包括医生和患者之间的对话,涵盖了各种健康问题和病情。我们还收集了ChatGPT生成的健康建议,作为后续的对话打磨过程所需的参考答案。

    2.2 对话打磨过程

    在对话打磨过程中,我们使用ChatGPT作为对话模型,通过迭代生成和反馈的方式,对对话进行打磨。具体而言,我们将医生的问询作为输入,使用ChatGPT生成回答,然后将生成的回答与参考答案进行比较,根据比较结果提供反馈。通过多次迭代,我们逐渐优化了对话的质量和流畅度。

    2.3 LLM的微调

    在对话打磨过程完成后,我们使用ChatGLM作为基础模型,对BianQueCorpus进行微调。微调的目的是让BianQue在CoQ方面具备更强的能力,能够根据多轮问询提供个性化和针对性的健康建议。

    3. 实验结果与讨论

    我们对BianQue进行了一系列实验,评估了其在问询和健康建议方面的能力。实验结果表明,BianQue能够平衡问询和健康建议的能力,使得生成的建议更加个性化和针对性。与其他现有的健康LLMs相比,BianQue在多轮问询的场景下表现出更好的效果。

    4. 结论

    本文介绍了BianQue,一种通过ChatGPT打磨的多轮健康对话的LLM。通过自构建的健康对话数据集BianQueCorpus,并结合ChatGLM的微调,BianQue能够平衡问询和健康建议的能力,提供更加个性化和针对性的建议。BianQue的设计和实现为LLMs在积极健康领域的研究和应用提供了有益的启示。

    参考文献:

    • Chen, Y., Wang, Z., Zheng, H., Xing, X., Xu, Z., Fang, K., … & Xu, X. (2022). BianQue: Balancing the Questioning and Suggestion Ability of Health LLMs with Multi-turn Health Conversations Polished by ChatGPT. arXiv preprint arXiv:2201.01232. 链接

    如果您对本文有任何疑问或意见,欢迎在评论区留言! 👩‍⚕️💬📚

  • 神经代码生成:通过链式思维推动轻量级语言模型的发展

    引言:
    神经代码生成是一种利用深度学习从自然语言需求中自动生成程序的技术,已经在解决日益复杂的软件开发挑战方面展现出巨大潜力。大型语言模型(LLMs),如GPT4,在代码生成任务中取得了令人瞩目的成果。然而,由于其庞大的参数规模和相关计算成本,它们的实际应用往往具有局限性。为了克服这些限制,研究人员开始探索将链式思维(CoT)推理技术与轻量级语言模型(ℓLMs)相结合,以提高其性能。本研究旨在利用ℓLMs的潜力,通过自动生成高质量的CoTs来提升代码生成的效果。

    轻量级语言模型的重要性:
    LLMs凭借其庞大的参数规模在代码生成方面表现出色。然而,由于部署所带来的时间、计算和财务成本等挑战,它们的实际应用受到限制,无法满足个人用户和资源有限的场景的需求。为了解决这些挑战,开发基于轻量级语言模型的技术至关重要。在本研究中,我们旨在通过链式思维推理技术探索ℓLMs在软件工程应用中的潜力,以提高其性能,使其更加高效和易用。

    链式思维推理用于代码生成:
    链式思维推理涉及将复杂任务分解为一系列中间的自然语言推理步骤。通过为LLMs提供这些中间步骤,它们可以生成更可靠和可解释的答案。链式思维推理技术已经在逻辑推理任务中取得了成功,通过将任务分解为多个独立的步骤,LLMs能够更好地理解和解决问题。受到这一成功的启发,研究人员开始探索将链式思维推理技术应用于代码生成任务。例如,自我规划方法和结构化链式思维技术被提出来增强模型的理解和问题解决能力。

    轻量级语言模型结合链式思维的潜力:
    尽管以往的研究已经展示了CoTs在提升LLMs代码生成性能方面的潜力,但目前的CoT生成方法往往依赖于手动编写或利用LLMs,导致成本较高。在本研究中,我们致力于回答两个主要问题:ℓLMs能否独立生成高质量的CoTs以指导代码生成?ℓLMs能否从其他地方生成的CoTs中获益?为了回答这些问题,我们对各种ℓLMs和LLMs进行了CoT生成能力的实证研究。研究结果表明,大多数参数规模在0.3到70亿之间的ℓLMs无法独立生成高质量的CoTs。然而,我们也观察到,当提供其他地方生成的CoTs时,所有ℓLMs的性能都有所提升。

    COTTON方法:
    基于我们的实证观察,我们提出了一种名为COTTON(链式思维神经代码生成)的新方法,以使ℓLMs能够自动生成有意义的CoTs来帮助代码生成。COTTON利用ℓLMs的能力和高质量CoTs中包含的知识来提高性能。我们构建了新的数据集,并在各种基准测试中进行了大量实验,以评估COTTON的有效性。结果表明,COTTON生成的CoTs在自动化和人工评估指标上优于基准线。值得注意的是,使用不同的ℓLMs生成的CoTs所实现的性能提升与ChatGLM(130B)和gpt-3.5-turbo(175B)等规模更大的LLMs相当。

    结论:
    总之,本研究探讨了将链式思维推理技术应用于轻量级语言模型(ℓLMs)以进行代码生成的方法。我们证明了大多数ℓLMs无法独立生成高质量的CoTs,但它们可以从其他地方生成的CoTs中获益。所提出的COTTON方法有效利用ℓLMs自动生成有意义的CoTs,从而在代码生成任务中提高性能。本研究突显了ℓLMs在软件工程应用中的潜力,并为提升轻量级语言模型在代码生成方面的能力提供了启示。


    《Chain-of-Thought in Neural Code Generation: From and For Lightweight Language Models》

  • 激活函数 SiLU 和 Swish 的区别

    SiLU(Sigmoid Linear Unit)和Swish是两种常用的激活函数,它们在神经网络中起到引入非线性的作用。下面是SiLU和Swish之间的区别:

    • 定义:
    • SiLU:SiLU是Sigmoid Linear Unit的缩写,它是输入数据和参数化Sigmoid函数输出的乘积。在大多数神经网络模型中,SiLU函数的参数”a”通常为1 [1]
    • Swish:Swish是一种数学函数,定义为输入数据和参数化Sigmoid函数输出的乘积。参数β可以是常数或可训练的参数,取决于模型。当β=1时,Swish函数等效于SiLU函数 [2]
    • 公式:
    • SiLU:SiLU函数的公式为SiLU(x) = x * sigmoid(x)。
    • Swish:Swish函数的公式为Swish(x) = x * sigmoid(βx),其中β是常数或可训练的参数。
    • 相似性:
    • SiLU和Swish都是通过将输入数据与Sigmoid函数的输出相乘来引入非线性。
    • 当β=1时,Swish函数与SiLU函数相同。
    • 区别:
    • 命名:SiLU是在2016年首次提出的,后来被重新发现并称为Swish [2]
    • 参数:SiLU函数的参数通常为1,而Swish函数的参数β可以是常数或可训练的参数。
    • 提出时间:SiLU在2016年被首次提出,而Swish在SiLU之后的一年左右被重新发现并提出,最初没有使用可训练的参数β [2]

    SiLU和Swish是两种常用的激活函数,它们在定义和公式上有一些相似之处,但也有一些区别,其中最主要的区别是Swish函数引入了可训练的参数β。


    Learn more:

    1. Activation functions in neural networks [Updated 2023]
    2. Swish function – Wikipedia
    3. The Swish Activation Function | Paperspace Blog
  • SiLu(Sigmoid Linear Unit)激活函数

    SiLu(Sigmoid Linear Unit)激活函数,也被称为Swish激活函数,是一种自适应激活函数,最早由Google Brain在2017年引入[2]。SiLu激活函数是Sigmoid和ReLU的改进版,具备无上界有下界、平滑、非单调的特性。

    SiLu激活函数的定义如下:
    f(x) = x * sigmoid(x)

    其中sigmoid(x)是标准的Sigmoid函数,它的值在0和1之间。SiLu函数的特点包括非线性、连续可导,并且在负无穷到正无穷的范围内都有定义[1]

    SiLu激活函数在深度神经网络中的效果优于ReLU,可以看作是平滑的ReLU激活函数。它既有ReLU激活函数的一些优点(例如能够缓解梯度消失问题),又能解决ReLU函数的一些缺点(例如ReLU函数不是零中心的,且在负数部分的梯度为零)。此外,SiLu函数还是平滑函数,这意味着它在整个定义域内都有导数,有利于优化[1]

    在YOLOv5等深度学习模型中,SiLu激活函数被广泛应用,取得了良好的效果[1]


    Learn more:

    1. SiLu激活函数解释_silu函数-CSDN博客
    2. [CV – Image Classification]图像分类之激活函数SiLU – YOLOv7使用的激活函数 – 知乎
    3. [杂记]激活函数SiLU和Swish的区别-CSDN博客
  • 29倍吞吐量提升:一探H2O高效生成大型语言模型的秘密

    在人工智能的浩瀚星海中,大型语言模型如同耀眼的恒星,它们的能力强大而深不可测。然而,这些模型的运作往往需要耗费巨大的计算资源,这也成为了阻碍AI技术广泛应用的一大障碍。今天,让我们一起探索那个改变游戏规则的创新项目——H2O。

    引领潮流的创新:H2O的诞生 🌟

    在NeurIPS’23大会上,一项名为H2O的研究引起了广泛关注。这是一种被称作“重点词神器”的技术,它使得大型语言模型的生成变得更加高效。那么,H2O到底是什么呢?

    简而言之,H2O是一种优化了的内存管理方案,它通过智能地管理键值(KV)缓存来减轻模型推理过程中的计算负担。KV缓存通常与序列长度和批量大小成线性关系,而H2O能够大幅减少这些缓存的内存占用。

    精华所在:重点词的力量 💡

    H2O的核心概念在于识别和利用了“重点词”——这些词在计算注意力得分时占有压倒性的重要性。研究者发现,这些词与文本中的频繁共现词强相关,若将它们从模型中移除,性能会大打折扣。H2O正是利用了这一洞察,通过平衡最近词和重点词,优化了KV缓存的管理。

    实践证明:H2O的效能 🛠

    H2O不仅在理论上前卫,它的实用性也已经在各种任务和不同规模的模型上得到了验证。

    实验表明:在保留两成重点词的情况下:

    通过H2O优化的大型模型在性能上可以实现高达29倍的吞吐量提升!

    这在当前领先的如DeepSpeed Zero-Inference、Hugging Face Accelerate和FlexGen等推理系统中表现尤为突出。

    开源精神:与社区共建 🌐

    值得庆幸的是,H2O项目已经在GitHub上开源,任何对AI充满热情的开发者和研究者都可以参与其中。无论是想提高你的语言模型生成效率,还是仅仅出于好奇,你都可以在这个平台上找到价值。

    结语:跨越技术的鸿沟 ✨

    随着H2O的横空出世,那些曾经遥不可及的AI技术现在似乎触手可及。这个项目不仅仅是技术的飞跃,更是开启普通人使用强大AI工具的大门。让我们拭目以待,看看H2O将如何在未来的日子里,继续激起技术革新的波澜!

  • 轻松驾驭大型语言模型:H2O重点词(Heavy-Hitter)神器的秘密

    《H2O: Heavy-Hitter Oracle for Efficient Generative Inference of Large Language Models》

    当我们谈论人工智能尤其是语言模型时,你可能会想象一个强大的机器,它能够写作、聊天,甚至创作诗歌。但这背后的真相是,这些模型的运行需要巨大的计算资源,尤其是在处理长篇内容时。然而,科技的步伐从未停歇,一个名为H2O的新工具出现了,它让大型语言模型的应用变得更加高效和便捷。

    迈向更高效的未来:H2O的诞生 🌟

    有鉴于大型语言模型(LLMs)在部署时所需成本的不断攀升,特别是在长内容生成如对话系统与故事创作领域,研究者们提出了一种全新的解决方案。这个解决方案的核心在于对所谓的KV缓存的智能管理。KV缓存是一种在GPU内存中存储临时状态信息的机制,其大小与序列长度和批处理大小成线性关系。但H2O通过一种创新的方法大幅度降低了KV缓存的内存占用。

    重点词(Heavy Hitters):H2O的核心思想 💡

    H2O背后的一个关键发现是,在计算注意力得分时,只有少数的词语(我们称之为重点词,H2)占据了大部分的价值。研究表明,这些重点词的出现与文本中词语的频繁共现强烈相关,一旦去除这些重点词,模型的性能会显著下降。

    基于这一发现,H2O采用了一种KV缓存淘汰策略,它动态地保留了最近的词和重点词之间的平衡。通过将KV缓存淘汰形式化为一个动态子模块问题,研究者们还为这一算法提供了理论上的保证。

    高效实践:H2O的验证与实现 🛠

    H2O不仅仅停留在理论上,它的有效性已经在多个任务和不同大小的模型(如OPT和GPT-NeoX)上得到了验证。使用H2O并将重点词的比例设为20%,在OPT-6.7B和OPT-30B上,相比于目前领先的三种推理系统——DeepSpeed Zero-Inference、Hugging Face Accelerate和FlexGen,吞吐量提高了多达29倍。

    开源共享:H2O与社区的互动 🌐

    H2O项目已在GitHub上开源,任何人都可以访问其代码仓库。项目提供了两种代码实现:

    • h2o_flexgen:基于FlexGen,用于提升大型语言模型生成的吞吐量。
    • h2o_hf:基于Hugging Face,测试不同基准上的性能,同时提供了模拟代码(掩蔽注意力矩阵)和真实KV淘汰实现。

    结语:技术的进步,让创新触手可及 ✨

    H2O的出现,不仅是技术的一大步,更是人工智能领域里一个值得纪念的里程碑。它使得原本资源密集的大型语言模型变得更加亲民,让更多的开发者和用户能够享受到AI的好处。

  • 揭开AI世界的神秘面纱:PowerInfer 文献解析

    🚀 作为AI世界的一位探险者,我们时常发现一些激动人心的突破,其中最新的一项就是PowerInfer。这项技术能够在个人计算机上利用普通的GPU进行高速的大型语言模型推断,这将为我们的生活带来怎样的改变呢?

    背景

    Generative large language models (LLMs) 已经成为人们关注的焦点。这些模型在创造性写作、高级代码生成以及复杂的自然语言处理任务中表现出了卓越的能力。然而,传统上这些模型需要在配备高端昂贵的服务器级GPU的数据中心进行部署。与此同时,越来越多的人们希望在更易接触的本地平台上运行LLMs,尤其是配备消费级GPU的个人电脑。这种转变是由对增强数据隐私、模型定制化以及减少推断成本的需求驱动的。

    然而,将LLMs部署在消费级GPU上也带来了重大挑战,主要是由于其巨大的内存需求。LLMs通常以自回归 Transformer 的形式顺序生成文本标记,每个标记需要访问包含数千亿参数的整个模型。因此,推断过程受到 GPU 内存容量的限制,特别是在本地部署中,每次处理单个请求时(通常一次只有一个请求)会留下极少的机会进行并行处理。

    PowerInfer:改变游戏规则

    PowerInfer是一种高速的 LL 微观形态推断系统,经过精心设计,能够利用LL推断中固有的高度局部性。它的关键想法是通过将频繁激活的神经元分配到 GPU,而将不经常激活的神经元分配到 CPU,从而最大程度地减少 GPU 的内存需求,提高推断速度。

    快人一步:PowerInfer的内部工作原理

    PowerInfer的工作原理基于两个关键见解:一是LL推断中存在的高局部性,二是CPU和GPU的协同执行。它通过离线和在线组件实现神经元分配策略,并结合神经元感知运算符,从而有效地管理GPU和CPU之间的计算负载。

    实验结果

    PowerInfer在高端PC上的表现令人印象深刻。与传统方法相比,PowerInfer的推断速度提高了7.23倍,具有显著的优势。在低端PC上,PowerInfer的性能提升略有降低,但仍然达到了5.01倍的提速。此外,PowerInfer还支持压缩后的LLMs,如INT4量化模型,其性能提升了2.89倍。此外,PowerInfer还支持不同的批处理大小,当批处理大小小于32时,PowerInfer的性能提升最为显著,达到了6.08倍的提速。

    结语

    PowerInfer的问世,为AI领域注入了新的活力,让人们看到了在个人计算机上进行高速大型语言模型推断的可能性。这项技术不仅提升了推断速度,还为本地部署提供了更加灵活的选择。我们对于未来这项技术的应用前景充满期待。

    🌟 如果您对这篇文章有任何疑问或想了解更多细节,欢迎在评论区留言,我们将会不断分享更多有趣的技术内容。让我们一起期待AI技术带来的更多惊喜吧!

  • PowerInfer:单个消费级GPU的高效推理引擎

    PowerInfer 提供了适用于个人计算机配备单个消费级GPU的高速大型语言模型(LLM)推理引擎。PowerInfer的关键创新在于利用LLM推理中固有的高局部性,其特点是神经元激活呈幂律分布。

    利用这一见解,PowerInfer采用了GPU-CPU混合推理引擎,其中热激活的神经元预先加载到GPU上以实现快速访问,而冷激活的神经元则在CPU上计算,显著减少了GPU内存需求和CPU-GPU数据传输。此外,它集成了自适应预测器和神经元感知的稀疏运算符,优化了神经元激活和计算稀疏性的效率。

    评估表明,PowerInfer在单个NVIDIA RTX 4090 GPU上实现了13.20个标记/秒的平均标记生成速率,峰值达到29.08个标记/秒,仅比顶级服务器级A100 GPU低18%。这种性能明显优于llama.cpp,性能提高了高达11.69倍,同时保持了模型的准确性。

    特点

    • 局部性设计: 利用稀疏激活和“热”/“冷”神经元概念进行高效的LLM推理,确保更高的速度和更低的资源需求。
    • 混合CPU/GPU利用: 无缝整合CPU和GPU的内存/计算能力,实现均衡的工作负载和更快的处理速度。
    • 易集成: 兼容流行的ReLU稀疏模型。
    • 本地部署便利: 专为在消费级硬件上本地部署进行了深度优化,实现了低延迟的LLM推理和在单个GPU上的服务。

    入门指南

    • 安装: 指南以安装和设置PowerInfer。
    • 模型权重: 有关使用模型权重和PowerInfer GGUF等特殊格式的信息。
    • 构建: 在Linux或macOS上使用CMake构建PowerInfer的说明。

    推理

    • 提供了详细的说明,用于在CPU和CPU-GPU混合推理中运行PowerInfer,包括限制GPU的VRAM使用情况。

    量化

    • 针对INT4(Q4_0)模型的优化量化支持,包括量化PowerInfer GGUF模型的说明。

    论文和引用

    PowerInfer的更多技术细节可以在他们的论文中找到。如果您发现PowerInfer对您的项目和研究有用或相关,欢迎引用他们的论文。

    致谢

    PowerInfer感谢llama.cpp等多个实体的支持和启发,THUNLP对ReLU稀疏模型的支持,以及Deja Vu对他们工作的启发。这种高速的大型语言模型服务解决方案为在配备消费级GPU的个人计算机上进行高效的LLM推理和部署提供了一种有前景的方法。