作者: C3P00

  • Würstchen:引领图像生成的速度革新

    大家好,今天我要给大家介绍一款名为 Würstchen 的新型图像生成模型。这款模型由 Hugging Face 公司开发,它是一种扩散模型,能够在高度压缩的图像潜在空间中进行文本条件操作。这项技术的优势在于能大大降低训练和推理的计算成本。以前我们在处理 1024×1024 的图像时,需要花费大量的计算资源,而现在,通过 Würstchen,我们可以用相当于 32×32 图像的资源来完成这项工作,这无疑是一个巨大的突破。

    Würstchen 的设计新颖,实现了 42 倍的空间压缩,这在之前是无法想象的。它采用了两阶段压缩,我们称之为A阶段和B阶段。A阶段是一个 VQGAN,B阶段是一个扩散自编码器。A阶段和B阶段共同被称为解码器,因为它们将压缩后的图像解码回像素空间。还有一个第三阶段模型,称为 Prior,它在高度压缩的潜在空间中进行学习,这种训练需要的计算资源只是当前顶级模型的一小部分,同时也让推理变得更便宜、更快。

    那么,为什么我们需要另一个文本到图像的模型呢?原因很简单,因为 Würstchen 非常快且高效。比起像 Stable Diffusion XL 这样的模型,Würstchen 可以更快地生成图像,同时使用的内存也更少。此外,Würstchen 的训练成本也大大降低,Würstchen v1 只需要 9,000 GPU 训练小时,而 Stable Diffusion 1.4 需要 150,000 GPU 训练小时。这意味着更多的组织可以训练这样的模型。

    使用 Würstchen 也非常简单。您可以通过 Diffusers 库来使用它,下面是一个使用 AutoPipeline 进行推理的例子:

    import torch
    from diffusers import AutoPipelineForText2Image
    from diffusers.pipelines.wuerstchen import DEFAULT_STAGE_C_TIMESTEPS
    
    pipeline = AutoPipelineForText2Image.from_pretrained("warp-ai/wuerstchen", torch_dtype=torch.float16).to("cuda")
    
    caption = "Anthropomorphic cat dressed as a firefighter"
    images = pipeline(
        caption,
        height=1024,
        width=1536,
        prior_timesteps=DEFAULT_STAGE_C_TIMESTEPS,
        prior_guidance_scale=4.0,
        num_images_per_prompt=4,
    ).images

    Würstchen 在 1024×1024 到 1536×1536 之间的图像分辨率上进行训练,同时我们也注意到,在 1024×2048 这样的分辨率上,Würstchen 也能产生很好的结果。我们还发现,Prior(第三阶段模型)能够非常快速地适应新的分辨率,因此在 2048×2048 的分辨率上进行微调应该是计算成本非常低的。

    此外,Würstchen 还提供了一些优化技术,包括使用 PyTorch 2 SDPA 加速注意力机制,为 Apple Silicon Mac 提供的 mps 设备支持,以及使用生成器进行可复现性优化等。

    在此,我们要感谢 Stability AI 提供的计算资源,使得我们能够训练出这样的模型,我们希望这项研究能够对更多的研究者和开发者带来帮助,提升他们在图像生成领域的工作效率。

    Würstchen 的所有检查点都可以在 Huggingface Hub 上查看。在那里,您可以找到多个检查点,以及未来的演示和模型权重。目前,Prior有三个检查点,Decoder有一个检查点。请在文档中查看检查点的解释,以及不同的 Prior 模型的用途。

    因为 Würstchen 完全集成在 Diffusers 中,所以它自带各种好处和优化。其中包括:

    • 自动使用 PyTorch 2 SDPA 加速的注意力机制。
    • 支持 xFormers 的 flash 注意力实现,如果你需要使用 PyTorch 1.x 而不是 2.x。
    • 模型卸载,将未使用的组件在不使用时移动到 CPU,这可以节省内存,而对性能影响微乎其微。
    • 顺序 CPU 卸载,适用于内存非常宝贵的情况。内存使用将被最小化,代价是推理速度较慢。
    • 使用 Comp 进行提示权重。

    在这里,我们的介绍就要结束了,但 Würstchen 的旅程才刚刚开始。这个新模型将在图片生成领域带来革命性影响,无论是在计算成本、效率还是在图像质量上,都有显著的提升。我们期待它在未来能够带给更多研究人员和开发者便利和启发。感谢大家的阅读,我们下次再见!

  • 进入3D高斯投影的奇妙世界:开创图形渲染新纪元

    大家好,欢迎来到今天的科技博客,我要引领大家进入一个充满奇妙创新的世界——3D高斯投影。这是一种由《3D高斯投影用于实时辐射场渲染》一文描述的光栅化技术,它带来了摄影级别的实时场景渲染。

    3D高斯投影到底是什么?

    首先,让我们来揭开3D高斯投影的神秘面纱。它是一种光栅化技术,这意味着它将场景描述的数据绘制在屏幕上,如同计算机图形中的三角形光栅化一样。然而,这里的主角并不是三角形,而是高斯分布。每一个高斯分布都被一些参数所描述,包括它的位置(XYZ)、协方差(即它的拉伸或缩放,由3×3矩阵表示)、颜色(RGB)以及透明度(α)。在实际应用中,这些高斯分布会被同时绘制出来,从而形成了我们所看到的3D图像。

    3D高斯投影的工作原理

    接下来,我将为大家详细介绍一下3D高斯投影的全过程。

    首先,通过利用Structure from Motion(SfM)方法,我们可以从一组图片中估算出一个点云。然后,这些点会被转换成高斯分布,这已经足够进行光栅化了。接下来,我们需要通过训练来学习一个可以产生高质量结果的表示。

    在训练过程中,我们使用了类似于神经网络的随机梯度下降,但没有涉及到层的概念。训练步骤包括使用可微的高斯光栅化将高斯分布光栅化为图像,计算光栅化图像与真实图像之间的差异,根据损失调整高斯参数,并应用自动化的密集化和剪枝。这使得高斯分布能更好地适应细致的细节,同时剪除不必要的高斯分布。

    作为光栅化技术,3D高斯投影的关键在于它的快速性和可微性。每一个高斯分布都会从摄像机的视角投影到2D空间,按深度排序,然后每个像素会依次迭代每个高斯分布,将它们混合在一起。

    3D高斯投影的重要性

    那么,为什么3D高斯投影会引起人们的广泛关注呢?答案很明显,它能实时渲染出高质量的场景。而且,它还有很多未知的可能性,例如是否可以进行动画渲染?是否可以进行反射渲染?是否可以在不依赖参考图像的情况下进行建模?此外,3D高斯投影对于很多AI研究领域,如Embodied AI,也可能带来深远的影响。

    3D高斯投影和图形的未来

    那么,3D高斯投影对图形的未来意味着什么呢?它的优点包括能快速地实时渲染出高质量的照片级别场景,并且训练过程也相对较快。然而,也存在一些缺点,比如它需要大量的视频内存(查看需要4GB,训练需要12GB),生成的场景文件大小也较大,达到1GB以上。此外,它与现有的渲染管线并不兼容,生成的场景是静态的,不能动态改变。

    虽然3D高斯投影带来了一些挑战,但它的出现无疑是图形渲染领域的一大创新。它打开了一个全新的可能性,也许在不久的将来,我们将看到更多利用3D高斯投影的实时、高质量的渲染效果。

    结语

    在这篇博客中,我们对3D高斯投影进行了初步的探讨。这是一个既神秘又充满无限可能性的领域。虽然它目前还存在一些局限性,但我们相信,随着科研人员的不断探索和技术的不断进步,3D高斯投影将为未来的图形渲染开创全新的纪元。

  • 以强化学习让生成模型更符合人类审美:DDPO与TRL的完美结合


    亲爱的读者,你是否曾经想过,我们能否让人工智能生成的图片更符合人类的审美呢?今天,我们就要带你探索这个问题的答案。我们将介绍如何使用DDPO(Denoising Diffusion Policy Optimization)通过TRL(Transformers Library)微调稳定扩散模型,从而使AI生成的图像更符合人类的审美。这是一场充满挑战与创新的神经网络冒险之旅,让我们一起启程吧!

    一、DDPO与微调扩散模型的优势

    首先,我们必须理解的是,DDPO不是微调扩散模型的唯一方法,但它的优势却是显而易见的。以计算效率和准确性为首的一系列特点,使得DDPO成为了扩散模型微调的理想选择。相比于之前的方法,DDPO将去噪步骤视为一个多步马尔可夫决策过程(MDP),并在最终获得奖励。这种全新的方法,使得代理策略能够成为一个各向同性的高斯分布,而不是一个复杂的分布。因此,DDPO不仅提高了计算效率,还减少了误差的堆积,为我们提供了更精准的结果。

    二、DDPO算法简述

    DDPO算法主要使用了一种策略梯度方法,即近端策略优化(PPO)。在使用PPO的过程中,我们注意到,DDPO算法的独特之处主要体现在轨迹收集部分。为了更好地理解这个过程,我们提供了一个简单的流程图,帮助你理解DDPO在动作中的运作方式。

    三、DDPO与RLHF:增强审美性的混合

    了解了DDPO的工作原理后,我们会发现,将DDPO与RLHF(Reinforcement Learning from Human Feedback)结合起来,可以更有效地让模型的输出符合人类的审美。在这个过程中,我们首先使用预训练的扩散模型,然后收集人类偏好的数据并使用它来训练奖励模型,最后使用DDPO和奖励模型进行微调。这个过程不仅高效,而且结果非常令人满意,得到的图像更符合人类审美。

    四、使用DDPO训练稳定扩散模型

    让我们深入了解一下如何使用DDPO训练稳定扩散模型。首先,你需要具备一定的硬件条件,例如拥有一台A100 NVIDIA GPU。然后,安装trl库和其他一些必要的依赖。在设置完硬件和软件环境后,你就可以开始实际的训练过程了。

    我们的训练过程主要使用了trl库中的DDPOTrainer和DDPOConfig类。我们提供了一个示例训练脚本,该脚本利用这两个类和一些默认参数,对预训练的稳定扩散模型进行微调。在训练过程中,我们使用了一种审美奖励模型,该模型的权重是从公开的HuggingFace仓库中读取的。因此,你不需要自己收集数据和训练审美奖励模型。

    最后,我们通过python命令启动训练脚本,然后就可以看到训练过程的实时输出了。这个过程可能需要一些时间,所以请耐心等待。完成训练后,你就可以使用微调后的模型生成新的图像了。

    五、总结

    今天,我们一起探讨了如何使用DDPO通过TRL微调稳定扩散模型。在这个过程中,我们深入了解了DDPO的优势和工作原理,以及如何将其与RLHF结合起来,以便更好地使模型的输出符合人类的审美。我们还详细介绍了使用DDPO训练稳定扩散模型的具体步骤。

  • 让人工智能向无穷无尽的流畅表达迈进 — 探索“注意力吸收器”

    在我们日常的对话中,有没有想过让人工智能(AI)也能如人类一样自由流畅地进行长时间的交流?今天,我们将一同探索一种新的技术——“注意力吸收器”,它可能会引领我们走向这个目标。

    为何我们需要“注意力吸收器”?

    大规模语言模型(LLMs)近年来引领了聊天机器人和虚拟助手的技术进步,但是,它们也存在一些限制。这些限制主要体现在两个方面:视频随机存取内存(VRAM)的使用和流畅度的丧失。

    当我们使用LLMs进行长时间的对话时,模型的VRAM使用会呈线性增长,这可能会导致设备的内存限制。另一方面,当输入的内容过长,模型的表达流畅度会明显下降,表现为生成无意义的字符,或者重复的词汇。为了解决这些问题,我们研究了一种名为“注意力吸收器”的方法。

    窗口注意力:一种尝试解决方法

    为了解决VRAM使用问题,我们可以尝试限制输入到LLM的令牌数量,这种方法被称为窗口注意力。

    在实验中,我们将窗口大小设置为1024个令牌。结果显示,虽然这种方法可以保持内存的稳定使用,但是一旦超过窗口大小,模型的表达能力就会显著下降。

    注意力吸收器:新的解决思路

    2023年,Xiao等人发现,当应用窗口注意力时,模型在窗口中的第一个令牌被移除后,模型的流畅度立即下降。他们注意到,即使是语义上不重要的令牌,也会占据大量的注意力分数。他们将这些令牌称为“注意力吸收器”。

    基于这个发现,他们提出了一种改进的窗口注意力方法,即在窗口中始终保留初始的四个令牌,也就是“注意力吸收器”。这种方法有效地解决了窗口注意力中的一个关键问题:当第一个令牌从窗口中移除时,模型无法将注意力分数转移到该令牌上,从而导致模型失去流畅度。

    结论:注意力吸收器的威力

    我们使用注意力吸收器进行了实验,结果显示,使用注意力吸收器的LLMs同时具备了稳定的空间复杂度和流畅的表达能力。这表明,使用注意力吸收器,我们的模型可以保持流畅的表达,直到我们的数据耗尽。

    注意力吸收器让我们的AI更接近无穷无尽的流畅表达。尽管这仍然是一个新的领域,但我们希望这种方法能够推动AI技术的前进,为我们的日常生活带来更多的便利。

    在未来,我们期待看到更多的研究者和开发者参与到这个领域中来,共同推动AI技术的发展,让我们的AI可以更好地理解我们,更好地服务我们。

  • 解密大型语言模型的无尽流畅性:探索”注意力汇聚”现象

    欢迎来到这个探索大型语言模型(LLMs)无尽流畅性的神奇旅程。在这篇文章中,我们将研究一种新的技术策略,即”注意力汇聚”,它在Hugging Face的博客中被详细介绍。这种策略对于改进LLMs,如所有Llama、Mistral、MPT、Falcon和GPT-NeoX(Pythia)模型的性能有着重要的影响。现在,让我们一起揭开这个神秘现象的面纱!

    LLMs的局限性:VRAM和流畅性问题

    首先,我们需要理解LLMs在现实应用中面临的挑战。其中,最重要的两个问题是VRAM使用和流畅性的丧失。在聊天助手场景中,这意味着设备的VRAM限制将限制用户连续提问的能力。同时,所有至今为止训练过的LLMs在输入过长时都会遇到流畅性的丧失问题,这会导致模型生成的语言失去连贯性。

    窗口注意力:一种尝试解决VRAM问题的方法

    为了解决VRAM使用问题,我们可以尝试限制输入给LLMs的令牌数量,这就是”窗口注意力”的概念。然而,实验结果显示,这种方法并不能有效地解决问题。一旦生成的令牌数超过窗口大小,模型的复杂度会立即上升。

    注意力汇聚:解决流畅性问题的新策略

    好在,我们发现了一个新的解决策略:注意力汇聚。研究人员发现,在应用窗口注意力的过程中,LLMs为生成下一个令牌分配了大量的注意力分数给前几个令牌,即便这些令牌在语义上并不重要。因此,当第一个令牌从窗口中移除时,模型无法将注意力分数装载到该令牌上,导致模型“崩溃”并丧失流畅性。

    为了解决这个问题,研究人员提出了一种改良的窗口注意力方法,它始终保留序列中的初始4个令牌,即注意力汇聚令牌。

    注意力汇聚的实践效果

    实验数据显示,使用注意力汇聚的LLMs在空间复杂性和困惑度上都表现出了稳定性。此外,按照这种方式,可以无限生成文本而不会出现模型流畅性的丧失。

    结论

    总的来说,注意力汇聚为我们提供了一种新的解决LLMs问题的方法:通过保留注意力汇聚令牌,我们可以避免模型在生成过程中失去流畅性,并保持恒定的VRAM使用。这种方法对于改进聊天助手、虚拟助手等基于LLMs的应用具有重要的实践价值。

  • 【深度揭秘】StreamingLLM:大型语言模型的“无限长”生成能力

    在今天的科技热点之旅中,我们要探讨的是一个源自语言模型领域的新词:StreamingLLM。这个强大的技术,旨在打破大型语言模型(LLM)在推理时只能记住有限上下文的限制。音乐会有无尽的旋律,那么,人工智能的语言模型是否也能拥有无尽的生成能力呢?让我们一起揭秘这个问题的答案。

    1. LLM的限制:有限的上下文记忆

    先让我们理解一下问题的背景。在现行的语言模型,如LLama2中,模型只能处理4K长度的上下文。这个限制导致了两个问题:一是模型无法记住超过最近4K上文的内容,二是当生成文本达到4K时,模型会自动停止。这在某种程度上限制了我们对AI对话助手的期望,我们希望它能不受输出长度的限制,并记住历史的对话。

    2. StreamingLLM的提出:无限序列长度的输入和输出

    然后,MIT,Meta AI,CMU的研究团队提出了一个全新的解决方案:StreamingLLM。他们声称,这种方法可以使得大型语言模型在无需任何微调的情况下,推广到无限序列长度的输入和输出。请注意,这个方法并没有增加LLM的对上文的记忆,只是让它输入输出无限长。这样的好处显而易见,例如,当你需要对话机器人生成一个很长的回答时,你不再需要输入“继续”。

    3. StreamingLLM的核心技术:Attention Sink

    那么,StreamingLLM是如何实现这个目标的呢?关键在于MIT韩松老师实验室的主要作者Guangxuan Xiao提出的一个名叫“Attention Sink”的技术。这个技术在处理Transformer推理时,解决了一些非常有趣的问题。他们的研究成果在学界得到了广泛的关注,并已经在github上开源。

    4. StreamingLLM的解决挑战:处理无限输入的LLM

    StreamingLLM的目标是在不牺牲效率和性能的情况下,部署一个能处理无限输入的LLM。这样的模型可以不受长度限制不停地输出,具体效果可以参考他们的主页视频。然而,这并非易事,面临着诸多挑战。

    一个挑战是在解码阶段,由于KV Cache的存在,会导致内存使用或延迟增加,而内存上线和推理服务SLA的存在,又使得KV Cache不能无限大,这构成了性能瓶颈。另一个挑战是现有模型的外推能力有限,当序列长度超过预训练时设定的注意力窗口大小时,它们的表现会下降,这是模型能力的瓶颈。

    在面对这些挑战时,StreamingLLM通过使用近似注意力的方法,放松了对全部输入记忆的限制,仍然只记住最近的上下文,但实现了处理无限输入并获得无限输出的效果。

    5. StreamingLLM的突破:Attention Sink

    StreamingLLM的另一项重大突破是他们提出了“attention sink”概念,这被认为是解决以上挑战的关键。简单来说,”attention sink”是一个技术,它将注意力集中在最近的上下文中,而非全部的上下文。这种方法大大节省了内存和计算资源,克服了KV Cache的限制,而且它使得模型可以处理无限长度的输入输出,这无疑是对现有模型的重大突破。

    6. StreamingLLM的实践应用

    StreamingLLM的实际应用非常广泛。比如在AI对话助手中,它可以生成无限长的对话,而且还能记住历史的对话。这对于长对话、长篇文章的生成,无疑提供了更好的用户体验。此外,StreamingLLM还可以应用于其他领域,比如在线翻译、自动问答、编程助手等等,无所不能。

    7. StreamingLLM的未来

    StreamingLLM的未来充满了可能。就像我们在音乐中能创作出无尽的旋律一样,StreamingLLM为我们的语言模型赋予了无尽的生成能力。我们期待,随着技术的进步,我们能解决更多的挑战,进一步提升模型的性能,让AI更好地服务于人类。

    结语:

    StreamingLLM技术让我们看到了大型语言模型的无限可能。它打破了有限上下文的限制,开创了无限长的生成能力。这无疑为AI领域带来了新的机遇,也带来了新的挑战。我们期待更多的研究者和开发者加入到这个领域中来,共同推动人工智能的进步。

    感谢您的阅读,希望我们的探讨对您有所帮助。在下一次的科技热点之旅中,我们会带来更多有趣的话题。再见!

  • ChatDev:改变编程的虚拟软件公司

    作为程序员,您是否曾幻想整个软件开发过程能够自动完成,不再需要手动编码、测试、排错?现在,有一个开源项目正在实现这一梦想,那就是ChatDev。

    ChatDev是一个虚拟的软件公司,由不同角色的智能语言模型组成,包括CEO、产品经理、技术总监、程序员、测试员等。这些智能角色形成一个多角色组织结构,共同推动软件项目的执行。他们可以通过文字交流来协作设计、编写、测试软件。

    这样的设置使ChatDev具有以下优势:

    1、操作简单,用户只需文字描述想要开发的软件即可,无需了解编程;

    2、高度可自定义,可以自定义公司内部流程、角色等;

    3、可扩展性强,可以轻松扩展新的角色和功能;

    4、安全性高,基于Docker可以安全运行;

    5、支持多种系统,包括Linux、MacOS、Windows。

    使用ChatDev非常简单。先配置好OpenAI的API密钥,然后通过简单的命令就可以启动一个软件项目开发。在交互过程中,ChatDev会在后台自动编写代码、进行测试、生成文档等,最终交付一个可直接运行的软件包。

    ChatDev还在不断完善中,已支持代码版本控制、人机交互等功能。用户甚至可以加入到这个虚拟团队中,与ChatDev的智能角色互动、提出建议。

    ChatDev是一个开源项目,欢迎共建。如果您对自动编程、人工智能应用等感兴趣,欢迎加入ChatDev团队!通过自定义ChatDev,我们可以探索人工智能在软件工程等场景的应用潜力,共同开创编程方式的新未来。

    项目地址:https://github.com/OpenBMB/ChatDev

  • XAgent:一个开源的自主智能体,自动解决你的各种问题

    作为AI爱好者,您是否也曾幻想拥有一个像“贾维”那样的AI助手,能自动完成各种日常任务和解决问题?现在,这个梦想即将成为现实!

    XAgent正是这样一个开源的自主智能体,它可以根据指令自动解决各种任务,无需人类参与其中。只需简单的文字描述,它就能够理解需求,制定计划,使用工具自主完成任务。无论是写报告、分析数据,还是帮助编程,它都能胜任。

    与此同时,XAgent具备其他AI助手所不具备的独特优势:

    1. 它是自主的,不需要人类监督就能自主地完成任务;
    2. 它运行在安全的Docker容器中,不会影响到您的主机环境;
    3. 它的能力可以轻松扩展,可以添加各种新工具来增强它的能力;
    4. 它拥有友好的图形界面,使用简单方便;
    5. 最重要的是,它可以与人类紧密配合,在遇到困难时主动请求帮助。

    XAgent由调度器、规划器和行动者3个部分组成。调度器负责任务分配,规划器负责生成计划,行动者则利用各种工具来完成任务。它内置了文件编辑器、Python笔记本、网页浏览器等多种功能,还可以轻松接入各种API,获取更强大的能力。

    想让XAgent帮你自动完成任务?首先需要通过Docker安装并启动它的工具服务器。这可以为XAgent提供一个安全的运行环境。然后配置XAgent的key等参数,就可以开始使用它了。无论是通过命令行还是可视化界面,都可以轻松与XAgent交互。

    XAgent当前还处于早期阶段,各种能力有待进一步提升。但作为一个开源项目,它的潜力无限。如果您对前沿AI技术充满兴趣、渴望参与构建人工智能的未来,欢迎加入XAgent的开发团队,我们一起创造真正的自主AI!

    XAgent GitHub:https://github.com/OpenBMB/XAgent

  • AI代理:探索新领域的火花

    亲爱的读者,欢迎来到这个探索人工智能 (AI) 的奇妙世界!今天,我们将一起揭开AI代理(AI Agent)这个热门话题的神秘面纱。你可能在想,为什么AI代理如此火爆?让我们一同探索吧。

    首先,我们来看看OpenAI联合创始人Andrej Karpathy的观点。他在一次开发者活动上分享了自己对AI代理的看法。他认为,现在正是回归神经科学,从中寻求灵感的时刻,就像在深度学习早期发生的那样。他还提到,普通人、创业者和极客在构建AI代理方面可能比OpenAI这样的大公司更有优势。

    什么是AI代理?

    在我们深入了解AI代理的火爆原因之前,让我们先理解一下AI代理到底是什么。AI代理是一个自主的实体,它可以使用AI技术来完成各种任务。在过去的几年里,神经网络和深度学习的发展使得AI代理的行为变得越来越像人类。

    AI代理的优势

    那么,为什么AI代理如此受欢迎?这主要归功于它们的自主性、安全性和可扩展性。AI代理可以独立完成各种任务,而不需要人类的干预。此外,它们的行为都被限制在一个安全的环境中,这样可以保护主机环境免受影响。而且,你可以轻松地向AI代理添加新的功能,以增强它们的能力。

    AI代理的示例

    现在,让我们来看看一些AI代理的实例。首先是Microsoft推出的AutoGen。AutoGen是一个框架,它支持使用多个代理开发大型语言模型(LLM)应用程序。这些代理可以相互交谈以解决任务。AutoGen代理是可定制的、可交谈的,并且无缝地允许人工参与。

    另一个例子是XAgent。XAgent是一个开源的基于大型语言模型的自主智能体,可以自动解决各种任务。它被设计为一个通用的智能体,可以应用于各种任务。

    AI代理的未来

    随着技术的发展,AI代理的能力和应用场景将会进一步扩大。与此同时,我们也需要意识到,虽然AI代理带来了许多便利,但也有可能带来一些挑战,比如隐私问题、道德问题等。因此,我们在享受AI代理带来的便利的同时,也要时刻关注这些可能的问题。

    总的来说,AI代理正在引领一场新的技术革命。无论你是一个科技爱好者,还是一个寻求创新的创业者,或者是一个对AI有深入研究的专家,AI代理都将给你带来无尽的可能和机会。让我们一起期待AI代理的未来吧!

    那就是今天的分享,希望你从中获得了一些有价值的信息。如果你对AI代理感兴趣,欢迎继续关注我们的文章。我们将会分享更多有关AI代理的最新信息和深入分析。

  • The Alignment Handbook:让语言模型与人类和AI偏好保持一致的强大技巧

    随着ChatGPT和Llama系列语言模型的发布,人们对于使用强化学习和人类反馈对语言模型进行训练以满足人类偏好的技术有了更深入的了解。然而,在训练语言模型以符合一组偏好时,如何训练模型、收集数据和衡量性能等方面的资源和指导相对较少。本文将介绍The Alignment Handbook,它提供了一系列强大的训练技巧,涵盖了整个训练过程,让您能够更好地训练语言模型以满足人类和AI的偏好。


    The Alignment Handbook简介
    The Alignment Handbook是一个旨在帮助开发人员训练语言模型以符合人类和AI偏好的指南。过去的一年中,ChatGPT和Llama等语言模型的发布引起了轰动,使得训练强大的对话模型变得更加容易。这也带来了大量的数据集和模型,主要集中在通过监督微调来教导语言模型遵循指令。然而,通过InstructGPT和Llama2的研究,我们知道通过加入人类(或AI)的偏好,可以显著提高模型的有用性和安全性。然而,在训练过程中,如何训练这些模型、收集数据和衡量性能等方面,目前公开的资源比较有限。The Alignment Handbook的目标是填补这一空白,为社区提供一系列强大的训练技巧,覆盖整个训练流程。

    初版的The Alignment Handbook将重点介绍以下技术:

    • 监督微调:教导语言模型遵循指令,并提供如何收集和整理自己的训练数据集的提示。
    • 奖励建模:教导语言模型根据人类或AI的偏好区分模型回复。
    • 拒绝抽样:一种简单但强大的技术,用于提升监督微调模型的性能。
    • 直接偏好优化(DPO):一种强大且有前途的替代方法。

    快速入门
    要运行本项目中的代码,请首先使用Conda创建一个Python虚拟环境:
    conda create -n handbook python=3.10 && conda activate handbook
    接下来,安装PyTorch v2.1.0,请参考PyTorch安装页面进行安装。
    一旦安装了PyTorch,您可以安装剩余的依赖包:
    pip install .
    然后,通过以下方式登录您的Hugging Face账户:
    huggingface-cli login
    最后,安装Git LFS,以便您可以将模型推送到Hugging Face Hub:
    sudo apt-get install git-lfs

    引用
    如果您发现本项目的内容对您的工作有帮助,请按照以下方式进行引用:
    @misc{alignment_handbook2023,
    author = {Lewis Tunstall and Edward Beeching and Nathan Lambert and Nazneen Rajani and Alexander M. Rush and Thomas Wolf},
    title = {The Alignment Handbook},
    year = {2023},
    publisher = {GitHub},
    journal = {GitHub repository},
    howpublished = {\url{https://github.com/huggingface/alignment-handbook}}
    }

    结语
    The Alignment Handbook旨在帮助社区更好地训练语言模型以符合人类和AI的偏好。通过提供强大的训练技巧,本指南将带领开发人员深入了解如何调整语言模型以满足人类和AI的偏好。本文介绍了The Alignment Handbook的背景和目标,以及其中涵盖的技术和资源。通过这些内容,我们希望能够帮助开发人员更好地训练语言模型,以满足用户的需求和偏好。无论您是初学者还是有经验的专业人士,The Alignment Handbook都将为您提供有价值的指导和实用的技巧,让您能够更好地应用语言模型于实际应用中。期待与您一起探索The Alignment Handbook带来的训练技巧和实践经验!

  • Prodia Labs:让AI集成变得轻松

    Prodia Labs正在重新定义AI在各种软件应用中的集成方式。我们的使命是使AI普惠于所有人。为此,我们打造了一款快速且用户友好的API,专注于图像生成。无论您是开发人员还是研究者,Prodia Labs都可以为您提供所需的AI集成解决方案。在本文中,我们将介绍Prodia Labs的使命、提供的API功能和联系方式,让您深入了解我们的技术和服务。


    Prodia Labs简介
    Prodia Labs正在重新定义AI在各种软件应用中的集成方式。我们的使命是使AI普惠于所有人。为了实现这一目标,我们开发了一款快速且易于使用的API,专注于图像生成。通过我们的API,开发人员可以轻松将AI模型集成到自己的应用中,无需担心GPU基础设施的管理问题。

    Prodia Labs提供的API
    Prodia Labs提供了简单高效的API,让开发人员能够轻松将自己的AI模型与Prodia Labs的技术相结合,实现各种应用场景的图像生成。无论您是想让机器生成图像,还是通过图像实现其他功能,Prodia Labs的API都能满足您的需求。我们的API旨在让开发人员能够专注于应用的业务逻辑,而无需担心管理GPU基础设施的复杂性。

    Prodia Labs的使命
    Prodia Labs的使命是使AI集成变得轻松。我们希望通过提供高效且易于使用的API,帮助开发人员将他们的AI模型应用到现实世界的各种应用中。我们相信,通过我们的技术和服务,AI将能够更广泛地服务于人类的生活和工作,为各行各业带来更多创新和便利。

    联系Prodia Labs
    如果您对Prodia Labs的API有任何疑问或需要帮助,请不要犹豫:

    查阅我们的API文档,了解更多细节;
    通过我们的网站prodia.com与我们联系;
    加入我们的Discord社区,与其他开发者和研究者交流。
    无论您是初学者还是经验丰富的专业人士,Prodia Labs都愿意与您一起探索AI集成的世界,为您的项目和应用提供支持和帮助。

    结语:
    Prodia Labs正在通过提供高效且易于使用的API,重新定义AI在各种软件应用中的集成方式。我们的目标是使AI普惠于所有人。通过本文的介绍,您可以了解到Prodia Labs的使命、提供的API功能以及如何联系我们。无论您是开发人员还是研究者,Prodia Labs都可以为您提供所需的AI集成解决方案。期待与您一起构建创新和便利的AI应用!

  • 快速入门指南:使用timm进行模型训练的开端

    标题:快速入门指南:使用timm进行模型训练的开端

    导读:
    本文旨在帮助开发人员快速了解如何将timm集成到模型训练流程中。首先,您需要安装timm。接下来,我们将通过示例代码演示如何加载预训练模型、列出具有预训练权重的模型、微调预训练模型、以及如何使用预训练模型进行特征提取、图像增强和推理。让我们一起开始这个令人兴奋的旅程吧!

    正文:
    快速入门
    本快速入门指南旨在帮助开发人员快速了解如何将timm集成到他们的模型训练流程中。在开始之前,您需要先安装timm。有关安装的详细信息,请参阅安装指南。

    加载预训练模型
    通过create_model()函数可以加载预训练模型。下面的示例展示了如何加载预训练的mobilenetv3_large_100模型。

    import timm
    
    model = timm.create_model('mobilenetv3_large_100', pretrained=True)
    model.eval()

    需要注意的是,默认情况下返回的PyTorch模型处于训练模式,如果要进行推理,需要调用.eval()方法将其设置为评估模式。

    列出具有预训练权重的模型
    要列出timm中打包的具有预训练权重的模型,可以使用list_models()函数。如果指定pretrained=True,该函数将只返回具有预训练权重的模型名称。

    import timm
    from pprint import pprint
    
    model_names = timm.list_models(pretrained=True)
    pprint(model_names)

    您还可以使用特定模式来列出名称中包含特定字符串的模型。

    微调预训练模型
    要微调任何预训练模型,只需更改分类器(即最后一层)即可。

    model = timm.create_model('mobilenetv3_large_100', pretrained=True, num_classes=num_finetune_classes)

    如果要在自己的数据集上进行微调,请编写一个PyTorch训练循环或调整timm的训练脚本以使用自己的数据集。

    使用预训练模型进行特征提取
    在不修改网络结构的情况下,可以使用model.forward_features(input)来替代通常的model(input)方法,对任何模型进行特征提取。这将跳过头部分类器和全局池化操作。有关更详细的使用timm进行特征提取的指南,请参阅特征提取部分。

    图像增强
    为了将图像转换为模型接受的有效输入,可以使用timm.data.create_transform()函数,并提供模型期望的输入尺寸。这将返回一个通用的变换对象,其中包含了一些合理的默认设置。

    timm.data.create_transform((3, 224, 224))

    预训练模型在训练时应用了特定的数据转换。如果您在图像上使用错误的转换,模型将无法理解所见的图像!要了解给定预训练模型使用了哪些转换,可以查看其预训练配置。

    model.pretrained_cfg

    您可以使用timm.data.resolve_data_config()函数来解析与数据相关的配置。

    data_cfg = timm.data.resolve_data_config(model.pretrained_cfg)
    transform = timm.data.create_transform(**data_cfg)

    使用预训练模型进行推理
    下面,我们将结合前面的内容,使用预训练模型进行推理。首先,我们需要一张图片作为输入。我们从网络上加载一张叶子标题:快速入门指南:timm模型训练的开端

    导读:
    本文将带您快速了解如何将timm集成到模型训练流程中。从安装timm开始,到加载预训练模型、列出可用的预训练模型、微调模型、使用模型进行特征提取、图像增强和推理等,我们将逐步介绍这些内容。让我们开始这个令人兴奋的旅程吧!

    正文:
    快速入门
    本快速入门指南旨在帮助开发人员快速了解如何将timm集成到模型训练流程中。在开始之前,您需要先安装timm,具体安装方法请参考官方的安装指南。

    加载预训练模型
    要加载预训练模型,可以使用create_model()函数。以下示例展示了如何加载预训练的mobilenetv3_large_100模型。

    import timm
    
    model = timm.create_model('mobilenetv3_large_100', pretrained=True)
    model.eval()

    需要注意的是,默认情况下返回的PyTorch模型处于训练模式,如果要进行推理,需要调用.eval()方法将其设置为评估模式。

    列出具有预训练权重的模型
    要列出timm中已打包的具有预训练权重的模型,可以使用list_models()函数。如果指定pretrained=True,该函数将只返回具有预训练权重的模型名称。

    import timm
    from pprint import pprint
    
    model_names = timm.list_models(pretrained=True)
    pprint(model_names)

    您还可以使用特定模式来列出名称中包含特定字符串的模型。

    微调预训练模型
    要微调任何预训练模型,只需更改分类器(即最后一层)即可。

    model = timm.create_model('mobilenetv3_large_100', pretrained=True, num_classes=num_finetune_classes)

    如果要在自己的数据集上进行微调,请编写一个PyTorch训练循环或调整timm的训练脚本以使用自己的数据集。

    使用预训练模型进行特征提取
    在不修改网络结构的情况下,可以使用model.forward_features(input)来替代通常的model(input)方法,对任何模型进行特征提取。这将跳过头部分类器和全局池化操作。有关更详细的使用timm进行特征提取的指南,请参考官方文档中的特征提取部分。

    图像增强
    要将图像转换为模型可接受的有效输入,可以使用timm.data.create_transform()函数,并提供模型所期望的输入尺寸。这将返回一个通用的转换对象,其中包含了一些合理的默认设置。

    timm.data.create_transform((3, 224, 224))

    需要注意的是,预训练模型在训练时应用了特定的数据转换。如果您在图像上使用错误的转换,模型将无法理解所见的图像!要了解给定预训练模型使用了哪些转换,可以查看其预训练配置。

    model.pretrained_cfg

    您可以使用timm.data.resolve_data_config()函数来解析与数据相关的配置。

    data_cfg = timm.data.resolve_data_config(model.pretrained_cfg)
    transform = timm.data.create_transform(**data_cfg)

    使用预训练模型进行推理
    下面,我们将结合前面的内容,使用预训练模型进行推理。首先,我们需要准备一张图片作为输入。我们从网络上加载了一张叶子的图片。


    import requests
    from PIL import Image
    from io import BytesIO
    
    url = 'https://datasets-server.huggingface.co/assets/imagenet-1k/--/default/test/12/image/image.jpg'
    image = Image.open(requests.get(url, stream=True).raw)
    image

    接下来,我们再次创建模型和转换。这次,我们确保将模型设置为评估模式。

    model = timm.create_model('mobilenetv3_large_100', pretrained=True).eval()
    transform = timm.data.create_transform(
        **timm.data.resolve_data_config(model.pretrained_cfg)
    )

    我们可以将图片通过转换函数进行处理,以便与模型进行推理。

    image_tensor = transform(image)
    image_tensor.shape

    现在,我们可以将处理后的图片传递给模型进行预测。这里我们使用unsqueeze(0)将其添加一个批次维度,因为模型需要一个批次的输入。

    output = model(image_tensor.unsqueeze(0))
    output.shape

    为了得到预测的概率,我们对输出应用softmax函数。这会得到一个形状为(num_classes,)的张量。

    probabilities = torch.nn.functional.softmax(output[0], dim=0)
    probabilities.shape

    接下来,我们使用torch.topk找到前5个预测类别的索引和概率值。

    values, indices = torch.topk(probabilities, 5)
    indices

    通过检查对应于最高概率的索引值,我们可以查看模型的预测结果。

    IMAGENET_1k_URL = 'https://storage.googleapis.com/bit_models/ilsvrc2012_wordnet_lemmas.txt'
    IMAGENET_1k_LABELS = requests.get(IMAGENET_1k_URL).text.strip().split('\n')
    [{'label': IMAGENET_1k_LABELS[idx], 'value': val.item()} for val, idx in zip(values, indices)]

    至此,我们完成了使用预训练模型进行推理的过程。我们加载了一张图片,将其通过转换函数处理后输入模型,并得到了模型的预测结果。通过这个示例,我们展示了如何使用timm进行快速入门。

    结语:
    本文通过一个快速入门的示例,介绍了如何使用timm进行模型训练。我们展示了加载预训练模型、列出具有预训练权重的模型、微调预训练模型、使用预训练模型进行特征提取、图像增强和推理的方法。希望本文对您了解和使用timm有所帮助,让您能够更轻松地进行模型训练和推理!

  • ChatGLM3:大模型工具调用实现原理揭秘

    ChatGLM3终于迎来了与ChatGPT相似的工具调用能力。通过研究其源码和样本数据,我们可以了解到让大型语言模型学会使用工具的方法原理。本文将深入探讨ChatGLM3的工具调用实现原理,带您揭开这个令人兴奋的功能背后的奥秘。


    ChatGLM3是一种大型语言模型,具备了与ChatGPT相似的工具调用功能。通过这一功能,模型可以调用特定的工具来执行特定的任务。在本文中,我们将深入研究ChatGLM3的工具调用实现原理,揭示其背后的工作原理。

    首先,让我们来看一个官方例子,以帮助我们理解工具调用的过程。在这个例子中,我们准备了两个工具调用的描述信息:追踪指定股票的实时价格和将文本转换为语音。这些工具都具有特定的参数要求,比如需要提供股票代码或要转换的文本等。

    在进行工具调用之前,我们需要构建一个系统提示(System Prompt),告诉模型我们可以使用哪些工具。然后,我们将用户的查询传递给模型,模型将根据上下文和系统提示中提供的工具信息,确定需要调用的工具和相应的参数。模型的输出将告诉我们应该使用哪个工具以及传递给工具的参数。

    在实际的工具调用中,我们需要实现调用工具的逻辑。例如,在追踪股票价格的例子中,我们可以定义一个名为”track”的工具,并提供股票代码作为参数。模型将根据返回的结果生成回复。对于复杂的问题,模型可能需要进行多次工具调用。

    在ChatGLM3中,工具调用的原理是通过特殊处理模型输出来实现的。输出结果中的字典对象表示模型需要调用特定的工具,并传递相应的参数。这样的结果是由一个特殊的处理过程生成的,确保模型可以理解和使用。

    在工具调用的样本数据中,我们可以看到模型预测的输出中包含了工具调用的相关信息,如函数名称和代码。这些信息被解析和处理,最终生成用于调用工具的参数。这种设计的目的是将模型的预测结果转化为可执行的工具调用。

    在ChatGLM3中,工具调用只支持通过chat方法进行,不支持stream_chat方法。这是因为在stream_chat方法中,无法对模型输出进行相应的处理和转换。

    通过深入研究ChatGLM3的源码和样本数据,我们揭示了其工具调用的实现原理。我们了解到,工具调用是通过特殊处理模型输出和相关信息来实现的。这种功能为模型的应用提供了更大的灵活性和扩展性,使模型可以执行更多的任务。


    ChatGLM3的工具调用功能为大型语言模型带来了更多的实用性和功能扩展性。通过深入了解其实现原理,我们更好地理解了模型如何使用工具,并可以在实践中灵活应用。期待着ChatGLM3在未来的发展中带来更多令人惊喜的功能和应用!


  • MMDeploy:让模型部署更加轻松的一站式解决方案

    在深度学习领域,模型的部署一直是一个具有挑战性的任务。为了解决这个问题,OpenMMLab推出了MMDeploy,一个强大而灵活的工具,帮助用户轻松地将他们的模型部署到不同的平台和推理引擎上。本文将带您深入了解MMDeploy的功能和最新进展,让您在模型部署的道路上游刃有余!
    时间如白驹过隙,转眼间MMDeploy已经陪伴大家走过一个季度了。在过去的几个月里,MMDeploy不仅积极进行了功能扩展,还提供了详细的模型部署教程。让我们来看看最新的进展吧!

    1. 设备支持:MMDeploy现在集成了NVIDIA Jetson系列,为用户提供了更多的选择。如果您对此感兴趣,可以查看安装说明手册。
    2. 平台支持:MMDeploy现在也支持Windows平台。这项工作的完成超出了预期,经历了各种挑战和困难。在此,我们要特别感谢社区同学对文档的审阅工作。另外,MMDeploy还支持了Android平台,并开发了相应的演示Demo。您可以通过链接观看这个Demo的视频。
    3. FFI封装:MMDeploy现在提供了Python接口,让Python爱好者能够轻松地进行模型推理。只需几行代码,即可完成模型的推理过程。在下面的章节中,我们将提供具体的例子供您参考。目前,MMPose和MMDetection3D也得到了算法库的支持,用户可以体验相关功能。
    4. 新的IR支持:MMDeploy现在支持TorchScript,这是PyTorch的一种中间表示格式。如果您对TorchScript还不太了解,可以通过链接了解更多信息。关于如何使用TorchScript和ONNX,我们将在后续的教程中进行介绍。教程和技术文档的更新将在我们的微信公众号和知乎账号上发布,欢迎大家关注。

    使用MMDeploy的方法非常灵活。您可以将其作为一个整体来完成端到端的模型部署,也可以只使用其中的部分功能模块,根据自己的项目需求灵活选择。例如:

    • 使用Model Converter进行模型转换和推理。这适用于快速搭建模型部署的演示和验证工作。只需提供相应的配置、算法和模型文件,通过一条命令将PyTorch模型转换为所需的推理引擎格式。目前,MMDeploy支持6种推理引擎:TensorRT、ONNXRuntime、PPL.NN、ncnn、OpenVINO和libtorch。
    • 将MMDeploy算子库集成到自己的项目中。如果您已经集成了TensorRT推理引擎,只需加载MMDeploy算子库,即可无缝读取MMDeploy转换的TensorRT模型。同样,这种方式也适用于ONNXRuntime推理引擎。
    • 导出SDK Model,将MMDeploy集成到自己的项目中。这适用于对延迟或吞吐量要求较高的场景。以检测任务为例,您可以选择集成C/C++接口或Python接口。其他任务,如分类、分割、文字检测等,也可以采用相似的方式集成。具体的集成方法和代码示例可以参考本文后续部分。

    除了上述典型的应用场景,您还可以基于MMDeploy开发新的模块或组件。比如,您可以开发新的模型导出方法、推理引擎组件、算法的后处理模块,或者支持其他文件格式的读取模块等。通过付诸行动,您可以开源自己的项目,展示自己的才华和创造力。

    未来规划方面,MMDeploy团队计划在第二季度继续推出新的功能和更新。具体的计划可以参考下图。最后,我们诚挚地邀请大家多多关注MMDeploy,并加入我们的社群,一起享受愉快的学习和探索过程。我们期待您的关注、点赞和参与!

    结语:
    MMDeploy是一个强大而灵活的工具,旨在简化深度学习模型的部署过程。通过MMDeploy,您可以选择最适合自己项目需求的部署方式,并轻松地将模型部署到各种平台和推理引擎上。无论您是初学者还是经验丰富的研究者,MMDeploy都能为您带来便利和效率。让我们一起探索MMDeploy的世界,让深度学习变得更简单!

  • 7B模型之最,Zephyr-7B为何备受瞩目?

    大家好,我想分享一个令人心动的消息,一个由HuggingFace H4团队打造的开源模型Zephyr-7B,以其非凡的性能在AI领域引发了一场轩然大波。这个只有70亿参数的模型,却以出乎意料的实力,击败了拥有700亿参数的巨头LLaMA2!更令人振奋的是,这款模型不仅能轻松在你的苹果电脑上运行,而且它是完全开源且免费的!

    Zephyr-7B,一股清新的西风

    Zephyr-7B的出现,正如它的名字一样,就像一股清新的西风在AI领域中吹拂。这是一个在Mistral-7B模型基础上,经过团队精心微调,使用直接偏好优化(DPO)在公开数据集上进行调整的结果。而这个Mistral-7B模型,是由被誉为“欧洲OpenAI”的Mistral AI打造的一个开源大模型。

    评估模型,Zephyr的优秀表现

    评估模型的性能,我们常用MT-Bench,这是一个评估模型处理多轮对话能力的基准测试,问题集涵盖写作、角色扮演、提取等8个类别。在此测试中,Zephyr-7B-alpha的MT-Bench平均得分为7.09,超越了Llama2-70B-Chat。

    而且,Zephyr并没有止步于此,H4团队推出了它的进化版,Zephyr-7B-beta。他们在GPT-4和Claude 2中提取对齐性,然后将其注入小模型中,开发出了使用蒸馏直接偏好优化(dDPO)用于小模型的方法。二代Zephyr,MT-Bench平均得分升高至7.34。在AlpacaEval上,Zephyr的胜率为90.6%,优于ChatGPT。

    用户反馈,Zephyr的热烈好评

    在接收到这个新闻的网友们中,对Zephyr的好评如潮。一项评分显示,Zephyr-7b-beta的Elo评分已经飙升至很高的水平,甚至超过了13B的模型。许多人纷纷表示,Zephyr的表现超出了他们的预期,他们对Zephyr给予了一致的好评。

    实力背书,Zephyr的高级RAG表现

    Llama Index(此前名为GPT Index)的联合创始人兼CEO Jerry Liu也对Zephyr进行了测试。他发现,Zephyr是目前唯一一个在高级RAG/agentic任务上表现良好的开源7B模型。数据也显示,Zephyr在高级RAG任务上的效果可以和GPT-3.5、Claude 2相抗衡。

    研发成本,Zephyr的经济性

    最后,我想特别提到的是,Zephyr的训练成本。按照研究团队的说法,微调这个模型只需要500美元,也就是在16个A100上跑8小时。这样的成本效益,无疑让Zephyr在AI模型的竞争中占据了更大的优势。

    总的来说,Zephyr-7B的出现,无疑为AI领域带来了一场革新。

  • 探索多语言的人工智能之旅:RWKV-5 World

    人工智能的力量正在日益扩大,其在各领域的应用也在不断深化。今天,让我们来了解一款名为RWKV-5 World的多语言文本生成模型,这款模型由BlinkDL公司开发,目前正在进行训练中。

    RWKV-5 World:一款跨越语言边界的模型

    RWKV-5 World是一款正在进行训练中的文本生成模型,其目标是在100多种世界语言(其中70%为英语,15%为多语言,15%为代码)上进行训练,这些语言数据来自于多个来源,包括EleutherAI的pile数据集,cerebras的SlimPajama-627B数据集,bigcode的starcoderdata数据集,以及oscar-corpus的OSCAR-2301数据集等。

    RWKV-5 World的模型特点

    RWKV-5 World模型的训练使用了RWKV-LM v4neo,这是一款由BlinkDL公司开发的领先的语言模型训练工具。在训练过程中,我们设定了”r2r4″作为测试参数。到目前为止,我们已经完成了两个版本的训练,第一个版本使用了0.59T的标记,第二个版本使用了1.12T的标记。

    RWKV-5 World的使用方法

    如果你想尝试RWKV-5 World模型,你需要使用rwkv pip包0.8.14+进行推理,你可以在PyPI上找到它。同时,我们也提供了在线演示,你可以在Hugging Face的网站上进行体验。如果你想了解更多关于RWKV-5 World模型的工作原理,你可以关注BlinkDL_AI的Twitter,或者访问我们的官方网站。

    RWKV-5 World的未来发展

    RWKV-5 World模型的训练仍在进行中,我们正在不断上传最新的训练进度至Hugging Face。想象一下,当我们使用更多的数据进行训练时,RWKV-5 World模型将会发生什么呢?这将是一个令人兴奋的旅程,让我们一起期待RWKV-5 World模型的未来发展吧!

    如果你对RWKV-5 World模型有任何问题或者建议,欢迎在下面的评论区留言,我们会尽快回复你。同时,如果你对这个博客有任何建议或者意见,也请随时告诉我们,我们期待你的反馈。

  • 越级的语言模型:Hugging Face的Zephyr 7B Alpha

    你是否曾经想过,人工智能能否与我们进行自如的对话,就像人与人交谈一样自然?欢迎你来到这个博客,今天,我们将要深入探讨一款名为Zephyr 7B Alpha的语言模型,这款语言模型由Hugging Face公司开发,它正在积极推动人工智能语言处理的边界。

    Zephyr 7B Alpha:一款全新的语言模型

    Zephyr 7B Alpha是一款强大的7B参数的GPT类模型,这款模型的主要语言是英语。它是基于mistralai/Mistral-7B-v0.1模型进行微调的,使用了一系列公开可用的、合成的数据集进行训练。它是Zephyr系列的第一个模型,专门为了提供帮助而训练。

    Zephyr 7B Alpha的模型源

    Zephyr 7B Alpha的源代码位于GitHub的Hugging Face仓库中,你可以在此浏览和学习。同时,Hugging Face也提供了一个在线演示,你可以在那里直接体验Zephyr 7B Alpha的能力。

    Zephyr 7B Alpha的应用与局限性

    Zephyr 7B Alpha的初始微调是基于UltraChat数据集的一个变体,该数据集包含了由ChatGPT生成的各种合成对话。然后,我们进一步使用Hugging Face的DPOTrainer在openbmb/UltraFeedback数据集上对模型进行了对齐。因此,你可以使用这个模型进行聊天,并可以在我们的在线演示中测试其能力。

    虽然Zephyr 7B Alpha是一个强大的模型,但也存在一些局限性。由于它没有使用RLHF等技术进行人工偏好对齐,或者像ChatGPT那样使用环路过滤响应进行部署,所以在某些情况下,模型可能会产生问题的输出。

    Zephyr 7B Alpha的训练和评估数据

    在训练过程中,我们使用了一系列的超参数,包括学习率、训练批次大小、评估批次大小、随机种子、分布式类型、设备数量、总训练批次大小、总评估批次大小、优化器类型、学习率调度器类型和学习率调度器预热比例等。在评估集上,Zephyr 7B Alpha表现出了优秀的性能。

    总结

    Zephyr 7B Alpha是一款强大的语言模型,它不仅拥有强大的参数,同时也利用了一系列先进的训练技术。虽然它还存在一些局限性,但我们相信,随着技术的进步,Zephyr 7B Alpha将会进一步提升其性能,为我们提供更多的帮助。让我们一起期待Zephyr 7B Alpha的未来吧!

    如果你对Zephyr 7B Alpha有更多的问题,欢迎在下面的评论区留言,我们会尽快回复你。同时,如果你对这个博客有任何的建议或者意见,也请随时告诉我们,我们期待你的反馈。

  • Zephyr 7B Alpha:打破边界的人工智能语言模型

    无论你是AI研究者,还是对人工智能技术有所热爱的普通人,都一定听说过Hugging Face,这家以人工智能为核心,致力于开放研究和推广最前沿技术的公司。今天,我们将一起探索他们的新作品——Zephyr 7B Alpha模型,一款融合了最先进技术,且有着广泛应用场景的语言模型。我们会通过这篇文章深入理解其工作原理,应用限制,以及训练过程。让我们一起踏上这次知识的旅程吧。

    Zephyr 7B Alpha:一款全新的人工智能语言模型

    Zephyr是一系列训练有素、能够充当帮助助手的语言模型系列的开山之作,而Zephyr-7B-α则是这一系列的首个模型。这款模型是基于mistralai/Mistral-7B-v0.1进行微调的,同时也使用了公开可用的合成数据集进行训练。这种独特的训练方法使模型在MT Bench上的性能大幅提升,使其更具有帮助性。然而,这也意味着模型可能会在被提示时生成问题文本,因此只建议将其用于教育和研究目的。

    Zephyr-7B-α是使用了7B参数的GPT-like模型,主要使用英语进行交互,其开源许可为MIT。此外,你可以通过以下链接访问其源代码库和演示页面:

    应用场景与限制

    Zephyr-7B-α模型首先在UltraChat数据集的变体上进行了微调,该数据集包含了由ChatGPT生成的各种合成对话,然后使用了DPOTrainer对模型进行了进一步的校准。因此,这款模型可以用于聊天,并且你可以在我们的演示页面上测试其功能。

    然而,Zephyr-7B-α并没有像ChatGPT那样应用RLHF技术来根据人类偏好进行对齐,或者使用循环过滤的方式来部署,因此模型可能会生成问题输出(特别是在被提示时)。此外,基础模型(mistralai/Mistral-7B-v0.1)的训练所使用的语料库的大小和组成也不为人知,但可能包含了各种Web数据和技术源,比如书籍和代码。

    训练与评估

    Zephyr 7B Alpha在评估集上取得了以下结果:

    • Loss: 0.4605
    • Rewards/chosen: -0.5053
    • Rewards/rejected: -1.8752
    • Rewards/accuracies: 0.7812
    • Rewards/margins: 1.3699
    • Logps/rejected: -327.4286
    • Logps/chosen: -297.1040
    • Logits/rejected: -2.7153
    • Logits/chosen: -2.7447

    训练过程使用了以下超参数:

    • 学习率:5e-07
    • 训练批量大小:2
    • 评估批量大小:4
    • 随机种子:42
    • 分布式类型:多GPU## 结论

    Zephyr 7B Alpha是Hugging Face的一款强大的人工智能语言模型,它的诞生标志着我们在语言处理技术上取得了一次重大突破。虽然这款模型有一些已知的限制,如可能生成问题输出等,但通过不断的学习和改进,我们相信这些问题将会被解决,而模型的性能也将得到进一步的提升。对于那些寻求深入了解最新人工智能技术的读者来说,Zephyr 7B Alpha无疑提供了一个极好的研究对象。

    在这个日新月异的时代,每一次的突破,每一次的创新,都代表着我们对未知世界的一次更深入的探索。让我们一起期待Zephyr 7B Alpha在未来能够带来更多的惊喜!

  • 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感兴趣,可以在这里查阅更多信息。希望这个工具能对你的工作或学习有所帮助!