标签: AGI

  • PRETTY: 一种无需训练的跨语言大型语言模型对齐方法

    大型语言模型(Large Language Models, LLMs)在自然语言处理领域取得了巨大成功。然而,如何使LLM的输出与特定偏好相一致仍然是一个挑战。监督式微调(Supervised Fine-Tuning, SFT)是一种直接的方法,但其对齐的深度受到质疑。在跨语言生成任务中,非英语数据的稀缺性和获取成本进一步限制了SFT的应用。

    最近,一篇名为”PRETTY: Prefix Text as a Yarn for Training-free Alignment of Foundation Language Models”的论文提出了一种创新的训练自由对齐方法,旨在解决这些问题。本文将深入探讨PRETTY方法的原理、实验验证及其潜在影响。

    SFT的局限性

    SFT通过在特定任务上微调预训练的LLM,使其输出与期望的偏好相一致。然而,一些研究质疑SFT实现的对齐可能只是表面的,没有真正深入到模型的知识体系中。

    此外,论文指出SFT在跨语言生成任务中的有效性可能受到其对先前token的依赖的限制。这种依赖性可能阻碍了SFT在目标语言中激发特定任务生成的能力。

    PRETTY方法

    针对上述问题,论文提出了PRETTY(Prefix Text as a Yarn)方法。其核心思想是使用最少的任务相关先验token来桥接基础LLM和SFT LLM,从而在无需训练的情况下实现与SFT相当的性能。

    PRETTY方法的关键在于构建高质量的先验token。论文提出了三种策略:

    1. SFT Prior:使用SFT模型生成的前几个token作为先验token。
    2. Refined Prior:使用较小的下游任务训练模型的输出token作为先验token。
    3. Pseudo Prior:对于极低资源语言对,使用双语词典创建伪标签作为先验token。

    通过在输入中添加这些先验token,PRETTY方法能够引导基础LLM进行跨语言生成,实现对齐而无需额外的训练。

    实验验证

    论文在机器翻译、跨语言摘要和非英语词性标注(POS)任务上对PRETTY方法进行了全面的实验验证。实验涵盖了八种不同语言,展示了该方法在不同资源可用性水平下的有效性。

    结果表明,通过仅添加一两个先验token,基础LLM就能达到与SFT模型相当的性能。这证明了PRETTY方法作为一种成本效益高的SFT替代方案的潜力。

    意义与展望

    PRETTY方法为推进多语言LLM的民主化提供了新的视角。它降低了对大量标注数据和计算资源的依赖,使得在资源有限的情况下也能实现高质量的跨语言对齐。

    未来的研究方向包括将PRETTY扩展到更多的对齐场景,如通过人类反馈进行强化学习,以及进一步优化先验token的生成策略。此外,还需要探索如何减轻SFT过程中可能出现的灾难性遗忘问题。

    小结

    PRETTY方法通过引入最少的任务相关先验token,提供了一种简单而有效的LLM跨语言对齐方案。它突破了SFT的局限性,降低了对训练资源的依赖,为发展更加普惠的多语言LLM铺平了道路。随着研究的深入,PRETTY有望在更广泛的任务和语言中得到应用,推动自然语言处理技术造福全球用户。

  • SiLU 激活函数:深度学习中的新星

    SiLU 激活函数,全称 Swish,近年来在深度学习领域崭露头角,并展现出诸多优势。本文将详细介绍 SiLU 激活函数,包括其定义、性质、优缺点以及应用场景,帮助读者更好地理解和运用这一新兴技术。

    1. 什么是 SiLU 激活函数?

    SiLU 激活函数由 Google 研究员提出,其定义如下:

    SiLU(x) = x * sigmoid(x)

    其中,sigmoid 函数是常见的激活函数,其表达式为:

    sigmoid(x) = 1 / (1 + exp(-x))

    SiLU 激活函数可以看作是 sigmoid 函数和输入值的乘积。它将输入值乘以一个介于 0 和 1 之间的值,从而实现非线性激活。

    2. SiLU 激活函数的性质

    SiLU 激活函数具有以下几个重要性质:

    • 平滑性: SiLU 激活函数是平滑的,这意味着它的导数在所有点都存在。这使得 SiLU 激活函数更易于优化,并有助于避免梯度消失问题。
    • 非单调性: SiLU 激活函数是非单调的,这意味着它在某些区间内是单调递增的,而在其他区间内是单调递减的。这使得 SiLU 激活函数可以更好地学习复杂的数据模式。
    • 零中心性: SiLU 激活函数在零点处取值为零。这使得 SiLU 激活函数可以更好地处理输入数据的分布,并避免梯度爆炸问题。

    3. SiLU 激活函数的优缺点

    与其他激活函数相比,SiLU 激活函数具有以下优点:

    • 更高的精度: 在许多任务中,SiLU 激活函数可以比其他激活函数获得更高的精度。
    • 更快的收敛速度: SiLU 激活函数可以帮助模型更快地收敛。
    • 更强的鲁棒性: SiLU 激活函数对噪声和数据分布变化更具鲁棒性。

    然而,SiLU 激活函数也存在一些缺点:

    • 计算成本更高: SiLU 激活函数需要进行乘法和 sigmoid 运算,这比其他一些激活函数的计算成本更高。
    • 缺乏理论解释: SiLU 激活函数的优越性还没有得到充分的理论解释。

    4. SiLU 激活函数的应用场景

    SiLU 激活函数可以应用于各种深度学习任务,包括:

    • 图像识别: SiLU 激活函数可以提高图像识别模型的精度。
    • 自然语言处理: SiLU 激活函数可以提高自然语言处理模型的性能。
    • 目标检测: SiLU 激活函数可以提高目标检测模型的精度。

    5. 总结

    SiLU 激活函数是一种新兴的激活函数,它具有平滑性、非单调性、零中心性等优点,并且在许多任务中表现出更高的精度和更快的收敛速度。虽然 SiLU 激活函数还存在一些缺点,但它仍然是深度学习领域值得关注的新技术。

    参考资料

  • 通过上下文多样化提高生成式常识推理的多样性

    大家好,今天我想和大家分享一篇有趣的论文,题为《通过上下文多样化提高生成式常识推理的多样性》。这篇论文主要研究如何提高大型语言模型(LLMs)在生成常识推理(GCR)任务中的输出多样性,同时保持生成质量。

    在GCR任务中,模型需要利用常识知识对给定情境进行推理,并生成连贯的句子。虽然生成句子的质量至关重要,但多样性同样重要,因为它反映了模型使用各种常识知识事实的能力。

    论文提出了一种名为In-Context Diversification(ICD)的方法来解决这个问题。ICD方法的核心思想是在保持生成质量的同时,通过上下文学习(ICL)来提高句子的多样性。具体来说,ICD方法分两步进行:首先,让LLM自由生成高质量句子;其次,使用用户指定的多样性度量来评估并提高句子的多样性。

    为了验证ICD方法的有效性,论文在CommonGen、ComVE和DimonGen三个GCR数据集上进行了实验。使用BLEU、SPICE、BERTScore等质量指标和self-BLEU、Distinctk、Entropyk等多样性指标来评估生成结果。实验结果表明,ICD方法在质量和多样性之间取得了理想的平衡,并且在Combined metrics上优于默认和多样化提示生成的句子。

    此外,论文还探索了将ICD生成的句子作为训练数据,用于提高现有常识生成器的多样性。通过MoE模型的验证,证明了这一点的可行性。同时,论文还研究了LLM是否能够准确判断给定句子集的多样性,以及不同温度设置对ICD方法性能的影响。

    尽管这项研究取得了积极的成果,但仍有一些局限性和未来的探索方向。例如,当前的研究主要集中在英语句子的生成上,未来可以将ICD方法扩展到多语言模型。此外,还需要在更广泛的LLMs上评估ICD方法,并考虑社会偏见和有害内容生成的问题。

    总的来说,这篇论文提出了一种有效的方法来提高LLMs在GCR任务中的输出多样性,并通过一系列实验验证了该方法的性能。这项研究不仅推动了GCR领域的发展,也为其他需要多样性输出的NLP任务提供了新的思路。希望这篇论文能够激发更多的研究,进一步提高LLMs在各种文本生成任务中的性能。

    如果大家对这篇论文感兴趣,欢迎留言讨论。也欢迎大家分享自己在GCR或其他NLP任务中遇到的问题和见解。让我们一起探索如何让AI生成更加多样化和高质量的文本吧!

  • FILM-7B: A Large Language Model that Makes Full Use of Context

    Large language models (LLMs) are becoming increasingly powerful, but they still struggle to fully utilize information within long contexts. This “lost-in-the-middle” challenge can hinder the development of LLMs, as they may fail to understand the full meaning of long texts.

    This blog article will discuss a new approach called FILM-7B (FILl-in-the-Middle) that addresses this challenge. FILM-7B is based on Mistral-7B and utilizes information-intensive (IN2) training, a data-driven solution that emphasizes the importance of every position in a long context.

    The Lost-in-the-Middle Challenge

    LLMs often struggle to understand the full meaning of long texts because they fail to recognize the importance of information in the middle of the context. This can lead to errors in tasks such as question answering and summarization.

    The “lost-in-the-middle” challenge is caused by a lack of explicit supervision during training. LLMs are not explicitly taught that every position in a long context can hold crucial information.

    FILM-7B: A Data-Driven Solution

    FILM-7B addresses the “lost-in-the-middle” challenge through IN2 training. This training method uses a synthesized long-context question-answer dataset, where the answer requires:

    • Fine-grained information awareness on a short segment (~128 tokens) within a synthesized long context (4K-32K tokens).
    • Integration and reasoning of information from two or more short segments.

    By applying IN2 training to Mistral-7B, FILM-7B is able to effectively utilize information from different positions in its 32K context window.

    Evaluation and Results

    FILM-7B was evaluated on three probing tasks that encompass various context styles and information retrieval patterns. The results demonstrate that FILM-7B can robustly retrieve information from different positions in its long context window.

    Furthermore, FILM-7B significantly improves the performance on real-world long-context tasks, while maintaining a comparable performance on short-context tasks. These results indicate that IN2 training can generalize to real-world scenarios and that FILM-7B does not compromise short-text capabilities during training.

    Conclusion

    FILM-7B is a promising LLM that addresses the “lost-in-the-middle” challenge through IN2 training. This data-driven approach allows FILM-7B to effectively utilize information from different positions in long contexts, leading to improved performance on both probing tasks and real-world long-context tasks.

    Further Research

    Several areas for further research are identified in the paper, including:

    • Exploring the diversity of training data.
    • Optimizing training strategies.
    • Investigating the impact of different model architectures.
    • Enhancing the model’s cross-lingual capabilities.
    • Exploring real-time performance and robustness.

    These research directions will help to further improve the capabilities of FILM-7B and other LLMs in handling long contexts.

    Additional Resources

    • GitHub Link: https://github.com/microsoft/FILM
    • Paper: https://arxiv.org/abs/2310.05389

  • 如何让大型语言模型(LLMs)充分利用长文本信息?——微软提出的FILM方法

    大家好,相信不少人已经体验过ChatGPT等大型语言模型(LLMs)强大的对话和写作能力。但你可能不知道,目前的LLMs在处理长文本(如长篇小说、学术论文等)时,还面临着一个棘手的问题,那就是”迷失在中间”(Lost-in-the-Middle)。

    什么是”迷失在中间”?简单来说,就是模型在阅读一篇很长的文章时,往往能很好地理解文章开头和结尾的内容,但对中间段落的重要信息却视而不见。这就像我们看一部电影,只记住了精彩的开场和结局,但对中间情节毫无印象。

    微软的研究人员推测,造成这个问题的原因,可能是目前用于训练LLMs的长文本数据存在偏差——它们没有明确告诉模型:文章的每个部分都可能包含关键信息,要认真对待!这就导致模型养成了”重两头、轻中间”的坏习惯。

    为了纠正这个偏差,研究人员提出了一种名为”信息密集型训练”(Information-Intensive Training,简称IN2)的新方法。它的核心思想是:人工合成一批长文本问答数据,其中的问题都需要模型在长文本的不同部分准确定位信息,并将它们联系起来进行推理。通过在这样的数据集上反复训练,模型就能学会关注长文本的每个细节。

    研究人员以Mistral-7B模型为基础,应用IN2训练方法,得到了一个名为FILM-7B的新模型。为了全面测试它的长文本理解能力,他们还精心设计了多个探测任务,覆盖不同的文本类型(如文档、代码、表格数据等)和信息检索模式(如串联、跳跃、双向等)。

    在这些探测任务上,FILM-7B展现了出色的表现,证明它能够灵活地在长达32,000词的超长文本中准确定位关键信息。更令人兴奋的是,在现实世界的长文本应用中,如长篇问答(NarrativeQA)任务,FILM-7B的F1分数也从23.5大幅提高到26.9,而在需要推理的常识问答(CSQA)等短文本任务上,性能并未下降反而小幅提升(59.3%->59.2%),可见IN2方法的有效性。

    此外,研究人员还将FILM-7B与其他知名的开源长文本模型(如ChatGLM、LongChat等)和商业模型(如GPT-3.5/4)进行了比较,结果显示FILM-7B在大多数长文本任务上都实现了最佳表现,充分证明了IN2训练的潜力。

    当然,FILM-7B还有进一步改进的空间。例如,研究人员分析发现,在训练过程中合理使用”滑动窗口”和”位置编码”等技巧,有望进一步提高模型性能。未来,他们还计划在更大规模、更多样化的真实数据上应用IN2方法,以进一步提升FILM系列模型的长文本理解能力。

    总之,这项研究为LLMs在长文本处理上的瓶颈问题提供了一种简单有效的解决思路,相信通过更多研究者的努力,LLMs必将在各类长文本应用场景中发挥更大的价值。感兴趣的读者可以访问论文 [项目网站](https://github.com/microsoft/FILM) 了解技术细节并动手实践。

    以上就是我对这篇论文的通俗解读,不知你觉得如何?欢迎在评论区交流你的想法!

  • 破解AI模型速度瓶颈:一种全新的“分组查询注意力”方法

    你是否曾经对人工智能模型的运算速度感到不耐烦,同时又希望它能保持高质量的预测结果?这可能听起来像是一个无法两全的问题,但科研人员们并没有停下探索的脚步。今天,我们要介绍的这篇研究报告,就给出了一个行之有效的解决方案。这篇研究名为 “GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints”,由来自Google Research的团队所撰写。他们提出了一种称为“分组查询注意力(Grouped-query attention, GQA)”的新方法,旨在解决Transformer模型中的一个关键问题,即如何在保持预测质量的同时,提高模型的运算速度。

    首先,让我们理解一下这个问题的背景。在Transformer模型中,一个关键的计算过程就是自回归解码器推理。这个过程需要大量的内存带宽来加载解码器权重和所有注意力键值,这就大大限制了模型的运算速度。为了解决这个问题,研究者们提出了多查询注意力(Multi-query attention, MQA)方法,它只使用一个键值对来大幅度提高解码器推理的速度。然而,MQA方法可能会导致预测质量下降,而且也不太适合用于训练单独的模型以提高推理速度。

    在这样的背景下,Google Research的团队提出了两个重要的贡献。首先,他们发现,可以使用少量的原始训练计算来将具有多头注意力(Multi-head attention, MHA)的语言模型检查点进行升级训练,使其能够使用MQA,这是一种非常成本有效的方法,可以同时获得高速的MQA和高质量的MHA检查点。其次,他们提出了分组查询注意力(GQA)的概念,这是一种在多头注意力和多查询注意力之间的插值方法,它为每组查询头部共享一个键和值头部。

    GQA的工作原理是将查询头部分成若干组,每组共享一个键头和值头。具有G组的GQA被称为GQA-G。GQA-1(具有一个组,因此具有一个键和值头)等同于MQA,而具有等于头部数量的组的GQA-H等同于MHA。通过使用中间数量的组,GQA可以产生一个质量比MQA高,但速度比MHA快的插值模型。此外,对于大型模型,GQA的优势更加明显,因此,我们期待GQA能在大型模型中提供一个特别好的权衡方案。

    在实验部分,研究者们使用了基于T5.1.1架构的所有模型,并对T5 Large和XXL的多头注意力版本,以及使用多查询和分组查询注意力的升级版T5 XXL进行了主要实验。实验结果表明,使用GQA的T5-XXL模型在各种不同的数据集上,包括CNN/Daily Mail, arXiv, PubMed, MediaSum, 和 MultiNews等新闻摘要数据集,以及WMT英德翻译数据集和TriviaQA问答数据集上,都保持了与多头注意力模型相近的质量,同时又具有与多查询注意力模型相近的速度。

    在AI领域,我们一直在寻找提高效率和质量的方法,而GQA的出现无疑为我们提供了一个新的可能。它不仅提高了模型的运算速度,而且还成功地保持了预测的质量。这使得GQA成为了提高AI模型性能的一种有力工具,我们有理由期待,这种方法将在未来的AI应用中发挥更大的作用。

    总的来说,这项研究的重要性在于,它不仅提供了一种提高AI模型速度的有效方法,而且这种方法还能保持模型的预测质量。这使得我们可以在实际应用中实现更快、更准确的AI模型,从而在各种场景中提供更好的服务。

    这就是今天的分享,希望你们能从中获取到有用的信息。我们将继续关注更多的人工智能研究,并与大家分享。感谢你们的倾听,我们下次见!

  • 从 LLAMA 到 LLAMA2:开源模型的进化之路

    大家好,欢迎来到我的博客!今天,我们要聊一聊有关两个开源语言模型的故事,它们分别是 LLAMA 和 LLAMA2。正如在科技世界里常见的,这两个模型的出现,都代表着一次重要的突破和进化。那么,它们是如何超越自身,再次突破技术瓶颈的呢?让我们一起探索吧。

    1. LLaMA:以开放和高效为目标的基础语言模型

    首先,我们来看看第一个主角 LLAMA。它仅仅使用公开可用的数据(数量高达数万亿 tokens)就训练出了效果超越 GPT-3 和 Chinchilla-70B PaLM-540B 的模型。最让人惊奇的是,它的体积比 GPT-3 小十倍,但效果更好。这是怎么做到的呢?

    LLaMA 的开发者们发现,给定一定的计算量预算,我们可以通过在较小的模型上训练更多的数据来获取最好的效果。这就是 LLAMA 所依据的尺度原则。

    为了训练 LLAMA,开发者们使用了多种来源的预训练数据,包括英文 CommonCrawl, Github, Wikipedia 等。每一种数据都经过了严格的清洗和筛选,以确保模型训练的质量。在训练时,每个 token 只训练一次,除了 Wikipedia 和 Books,训练了两次。

    LLaMA 的模型结构基于 transformer,在 GPT3、PaLM、GPTNeo 的基础上做出了改良。其中包括使用 RMSNorm 进行 Pre-normalization,使用 SwiGLU 替换 ReLU 作为激活函数,舍弃绝对位置编码,使用旋转位置编码等一系列创新手段。

    2. LLaMa 2:基础和微调并进的聊天模型

    接下来,我们来了解一下 LLAMA 的升级版本——LLAMA2。虽然 LLAMA1 的效果已经非常优秀,但是与闭源的“产品级”模型相比,如 ChatGPT、BARD、Claude,仍有一定的差距。因此 LLAMA2 的目标就是要尽可能地提升模型的性能,使其更符合人类的偏好。

    LLAMA2 的训练数据量增加了40%,达到了2万亿 tokens。同时,上下文长度翻倍,引入了 grouped-query attention 的新技术。这些改变使得 LLAMA2 在长数据的效果明显提升,而在短数据上的性能则没有下降。

    LLAMA2 在微调上也做了很多工作。它引用了 LLAMA1 中的 SFT 数据集设置,对模型进行了精细的调整。在收集数据时,采用了课程策略,逐渐将问题复杂化,使得模型能够更好地适应和处理各种问题。

    结语

    总的来说,LLAMA 和 LLAMA2 的出现,代表了开源模型的重大进步。他们的成功,得益于严谨的数据处理,创新的模型结构,以及精细的模型调整。这些都是我们在探索人工智能的道路上,值得学习和借鉴的经验。

    希望这篇博客能给你带来一些启发和灵感。我们下次再见!

  • XAgent:面向复杂任务解决的自主智能体

    XAgent 是一个开源的基于大型语言模型(LLM)的自主智能体,能够自动解决各种任务。它旨在成为一个通用的智能体,应用于各种任务。尽管 XAgent 目前仍处于早期阶段,我们正在不断努力改进它。

    我们的目标是创建一个可以解决任何给定任务的超级智能体。我们欢迎全职、兼职等各种形式的合作。如果您对智能体的前沿感兴趣,并希望加入我们实现真正的自主智能体,欢迎与我们联系。

    XAgent 特点

    XAgent 具有以下特点:

    • 自主性:XAgent 可以在没有人类参与的情况下自动解决各种任务。
    • 安全性:XAgent 被设计为安全运行。所有的行为都被限制在一个 Docker 容器内,不用担心您的主机环境受到影响。
    • 可扩展性:XAgent 被设计为可扩展的。您可以轻松地添加新的工具来增强智能体的能力,甚至是新的智能体!
    • GUI:XAgent 为用户提供了友好的 GUI 来与智能体交互。您也可以使用命令行界面与智能体交互。
    • 与人类的合作:XAgent 可以与您合作解决任务。它不仅有能力在行进中遵循您的指导来解决复杂的任务,而且在遇到挑战时还可以寻求您的帮助。

    工具服务器

    工具服务器为 XAgent 提供强大和安全的工具来解决任务的服务器。它是一个 Docker 容器,为 XAgent 提供一个安全的运行环境。目前,工具服务器提供以下工具:

    • 文件编辑器:提供一个文本编辑工具,可以写入、读取和修改文件。
    • Python笔记本:提供一个交互式的 Python 笔记本,可以运行 Python 代码来验证想法、绘制图形等。
    • 网页浏览器:提供一个网页浏览器,可以搜索和访问网页。
    • Shell:提供一个 bash shell 工具,可以执行任何 shell 命令,甚至安装程序和托管服务。
    • Rapid API:提供一个从 Rapid API 检索 API 并调用它们的工具,为 XAgent 提供了广泛的 API。

    快速开始

    首先,您需要安装 Docker 和 docker-compose。然后,您需要构建工具服务器的镜像。在 ToolServer 目录下,运行以下命令:

    cd ToolServer
    docker-compose up

    这将构建工具服务器的镜像并启动工具服务器的容器。如果您想在后台运行容器,请使用 docker-compose up -d

    在启动 ToolServer 后,您可以配置并运行 XAgent。首先,安装依赖项:

    pip install -r requirements.txt

    然后,您需要使用 config.yml 配置 XAgent 才能运行。请提供至少一个 OpenAI key,用于访问 OpenAI API。

    最后,运行 XAgent:

    python run.py --task "put your task here" --model "gpt-4"

    您可以使用参数 --upload_files 来指定提交给 XAgent 的文件。

    案例

    我们提供了一些使用 XAgent 解决任务的案例。您可以在 XAgent 官网上查看我们的在线演示。我们还提供了视频演示和使用 XAgent 的案例。

    案例1. 数据分析:展示双环机制的有效性

    在这个案例中,我们将展示 XAgent 如何利用双环机制来解决数据分析任务。我们将使用一个简单的数据集 iris.zip 上传到 XAgent,然后让 XAgent 分析数据集并生成一个报告。XAgent 将任务分解为 4 个子任务:数据理解,验证 Python 环境,编写数据分析代码,编写报告。

    案例2. 推荐:展示与人类的合作

    XAgent 拥有独特的能力,可以积极寻求人类协助并共同解决问题,持续重新定义着人类与智能体人合作的界限。如下方截图所示,用户寻求了 XAgent 的帮助,以推荐一些适合友好聚会的优秀餐厅,但未提供具体细节。识别到提供的信息不足,XAgent 利用了“请求人类帮助”工具,促使人类介入以获取用户的偏好位置、预算限制、烹饪偏好以及任何饮食限制。凭借这宝贵的反馈信息,XAgent 轻松地生成了定制的餐厅推荐,确保用户及其朋友们获得了个性化和令人满意的体验。

    案例3. 训练模型:高级工具使用者

    XAgent 不仅能处理琐碎任务,还可以在复杂任务中提供宝贵的帮助,比如模型训练。在这里,我们展示了一个用户希望分析电影评论并评估特定电影周围公众情感的情景。作为回应,XAgent 迅速启动了下载 IMDB 数据集的过程,以训练一款先进的 BERT 模型。拥有了这个训练有素的 BERT 模型,XAgent 能够轻松地应对电影评论的复杂细节,提供关于公众对各种电影看法的见解性预测。

    评测

    我们进行了人类偏好评估,以评估 XAgent 的性能。我们为评估准备了超过 50 个现实世界的复杂任务,可以分为 5 个类别:搜索与报告,编码与开发,数据分析,数学和生活助手。我们将 XAgent 的结果与 AutoGPT 进行比较,结果显示 XAgent 完全胜过 AutoGPT。

    博客

    我们的官方博客在这里

    引用

    如果您发现我们的仓库对您有帮助,希望您能引用我们的论文:

    @misc{xagent2023,
          title={XAgent: An Autonomous Agent for Complex Task Solving},
          author={XAgent Team},
          year={2023},
    }

    以上就是 XAgent 的详细介绍和使用案例,希望对您有所帮助。

  • vLLM:让大型模型推理更快的工具

    今天,我要给大家介绍一款名为vLLM的神奇工具。它的主要功能是加速大型语言模型(如OpenAI的GPT-3)的推理速度。如果你是NLP(自然语言处理)领域的研究员或开发者,我相信这个工具可能会对你的工作有所帮助。

    为什么我们需要vLLM?

    在大规模语言模型运行时,我们常常遇到一个问题:显存不足。这是因为在生成新的单词或者词语(token)时,我们需要存储一些称为 keys 和 values的数据(我们可以把它们看作是模型用来生成新token的”记忆”)在GPU的显存中。然而,这些数据通常非常大,而且大小也会不断变化,这使得显存管理变得困难。传统的管理方式往往会造成显存的60%-80%的浪费。

    这就是vLLM要解决的问题。它引入了一种名为PagedAttention的新技术,可以有效地管理这些keys和values,使得显存的使用效率接近最优(浪费比例低于4%)。这样一来,我们就可以使用更大的数据批次进行运算,从而提高GPU的并行计算能力。

    vLLM的核心技术:PagedAttention

    PagedAttention的工作原理受到了操作系统中虚拟内存和分页的启发。它将每个序列的数据划分为块,每个块包含固定数量的keys和values。这些块不需要连续的内存,因此可以更灵活地对它们进行管理。

    此外,PagedAttention还支持内存共享,也就是说,当用一个提示生成多个不同的序列时,可以共享计算量和显存。这种内存共享机制可以大幅降低显存需求(最高可降低55%),从而进一步提升推理速度。

    如何使用vLLM?

    vLLM的使用非常简单。首先,使用pip命令安装vLLM:

    pip install vllm

    然后,你就可以使用vLLM来生成文本了:

    from vllm import LLM
    
    prompts = ["Hello, my name is", "The capital of France is"]  # 提示
    llm = LLM(model="lmsys/vicuna-7b-v1.3")  # 创建一个LLM
    outputs = llm.generate(prompts)  # 从提示生成文本

    vLLM也支持在线服务。你可以使用以下命令启动一个在线服务:

    python -m vllm.entrypoints.openai.api_server --model lmsys/vicuna-7b-v1.3

    然后,你就可以通过HTTP请求来调用这个服务了:

    curl http://localhost:8000/v1/completions \
        -H "Content-Type: application/json" \
        -d '{
            "model": "lmsys/vicuna-7b-v1.3",
            "prompt": "San Francisco is a",
            "max_tokens": 7,
            "temperature": 0
        }'

    如果你对vLLM感兴趣,可以在这里查阅更多信息。希望这个工具能对你的工作或学习有所帮助!

  • QLoRA: 高效Finetuning 量化 LLMs

    Dettmers提出了一种高效的微调方法QLoRA,它能够在保持完整的16位微调任务性能的同时,将内存使用量降低到足以在单个48GB GPU上微调65B参数模型的程度。

    QLoRA通过在低秩适配器(LoRA)中将梯度反向传播到一个冻结的、4位量化的预训练语言模型。我们最优秀的模型家族,我们将其命名为Guanaco,在Vicuna基准测试中胜过之前所有公开发布的模型,达到了ChatGPT性能水平的99.3%,而仅需要在单个GPU上进行24小时的微调。QLoRA在不牺牲性能的前提下采用了许多创新技术来节省内存:

    (a)4位NormalFloat(NF4),一种对于正态分布权重来说,从信息理论角度具有最优性的新数据类型;

    (b)双重量化,通过量化量化常数来减少平均内存占用;

    (c)分页优化器,以管理内存峰值。我们使用QLoRA对超过1000个模型进行微调,在8个指令数据集中,对多种模型类型(LLaMA,T5)以及在常规微调中难以运行的模型规模(例如33B和65B参数模型)进行了详细的指令跟随和聊天机器人性能分析。

    结果表明,QLoRA在小型高质量数据集上的微调可以达到最先进的结果,即使使用比之前SoTA更小的模型。我们根据人类评估和GPT-4评估结果,对聊天机器人性能进行了详细分析,结果表明GPT-4评估是一种廉价且合理的人类评估替代方案。此外,当前的聊天机器人基准测试并不可靠,无法准确评估聊天机器人的性能水平。已发布了所有模型和代码,包括用于4位训练的CUDA内核。


    artidoro/qlora: QLoRA: Efficient Finetuning of Quantized LLMs (github.com)