作者: admin

  • 深入解读 DeepSeek-V2 语言模型中的多头潜在注意力机制 (MLA)

    在最新的 DeepSeek-V2 语言模型中,多头潜在注意力机制 (Multi-head Latent Attention, MLA) 作为一种创新架构,被设计用来保证高效的推理过程。本文将详细介绍 MLA 的关键特性及其在 DeepSeek-V2 中的应用和优势。

    高效的推理过程

    MLA 通过将 Key-Value (KV) 缓存压缩到一个潜在向量中,显著减少了推理过程中所需的内存和计算资源。这种压缩大大降低了内存占用和计算需求,从而实现更快、更高效的处理 [1]

    Key-Value (KV) 缓存压缩

    在注意力机制中,KV 缓存是一个重要组件,负责存储输入序列中不同 token 之间的关系信息。MLA 将这个缓存压缩成一个潜在向量,显著减小其大小和内存占用 [1]

    稀疏计算

    MLA 是 DeepSeekMoE 架构的一部分,该架构通过稀疏计算实现经济高效的强大语言模型训练。这意味着每个 token 仅激活模型参数的一个子集,从而减少了训练过程中的整体计算需求 [1]

    提升的性能

    与其前身 DeepSeek 67B 相比,采用 MLA 的 DeepSeek-V2 实现了显著更强的性能。尽管仅激活了 21B 的参数,DeepSeek-V2 及其聊天版本仍在开源模型中达到了顶级性能 [1]

    结论

    总的来说,MLA 是一种通过将 Key-Value 缓存压缩到潜在向量中来保证高效推理的创新架构。它显著减少了内存和计算需求,带来了更快、更高效的处理过程。采用 MLA 的 DeepSeek-V2 在降低训练成本和提高生成吞吐量的同时,仍实现了强大的性能 [1]


    了解更多:

    1. [2405.04434] DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model
    2. [2405.04434] DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model
    3. Transformers Explained Visually (Part 3): Multi-head Attention, deep dive | by Ketan Doshi | Towards Data Science
  • 探索 ActivityPub:去中心化社交网络协议

    引言

    随着互联网的不断发展,去中心化的社交网络逐渐成为热点话题。ActivityPub 正是在这种背景下应运而生的,它是一种去中心化的社交网络协议,基于 ActivityStreams 2.0 数据格式。本文将详细介绍 ActivityPub 的工作原理及其实现方式。

    什么是 ActivityPub?

    ActivityPub 是一种去中心化的社交网络协议,旨在通过客户端到服务器和服务器到服务器的 API 实现内容的创建、更新和删除,以及通知和内容的分发。它的主要目标是让去中心化的网站能够共享信息,并让用户通过各种客户端与自己的账户进行互动。

    ActivityPub 的两层协议

    服务器到服务器的联邦协议

    这种联邦协议使得不同的去中心化网站能够共享信息。例如,当一个用户在一个服务器上发布内容时,其他服务器上的用户也能够看到并互动。

    客户端到服务器的协议

    这种协议允许用户(包括真实用户、机器人和其他自动化进程)通过各种客户端(如手机、桌面应用或 Web 应用)与他们在服务器上的账户进行通信。

    用户和演员

    在 ActivityPub 中,用户通过服务器上的账户表示为“演员”。每个演员都有一个收件箱和一个发件箱,用于接收和发送消息。这些都是通过 URL 进行标识的。

    示例

    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Person",
      "id": "https://social.example/alyssa/",
      "name": "Alyssa P. Hacker",
      "preferredUsername": "alyssa",
      "summary": "Lisp enthusiast hailing from MIT",
      "inbox": "https://social.example/alyssa/inbox/",
      "outbox": "https://social.example/alyssa/outbox/",
      "followers": "https://social.example/alyssa/followers/",
      "following": "https://social.example/alyssa/following/",
      "liked": "https://social.example/alyssa/liked/"
    }

    如何发送和接收消息?

    发送消息

    • POST 到收件箱:将消息发送到某人的收件箱(仅适用于服务器到服务器的通信)。
    • POST 到发件箱:将消息发送到全世界(客户端到服务器)。
    • GET 从发件箱:查看某人发送的消息(客户端到服务器和/或服务器到服务器)。

    接收消息

    • GET 从收件箱:查看最新收到的消息(客户端到服务器)。

    一个完整的示例

    假设 Alyssa 想给她的朋友 Ben 发送一条消息,询问他是否还记得归还一本借来的书。她可以创建一个 ActivityStreams 对象并将其发送到她的发件箱。

    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Note",
      "to": ["https://chatty.example/ben/"],
      "attributedTo": "https://social.example/alyssa/",
      "content": "Say, did you finish reading that book I lent you?"
    }

    服务器会将这条消息包装在一个 Create 活动中,并发送到 Ben 的收件箱。

    {
      "@context": "https://www.w3.org/ns/activitystreams",
      "type": "Create",
      "id": "https://social.example/alyssa/posts/a29a6843-9feb-4c74-a7f7-081b9c9201d3",
      "to": ["https://chatty.example/ben/"],
      "actor": "https://social.example/alyssa/",
      "object": {
        "type": "Note",
        "id": "https://social.example/alyssa/posts/49e2d03d-b53a-4c4c-a95c-94a6abf45a19",
        "attributedTo": "https://social.example/alyssa/",
        "to": ["https://chatty.example/ben/"],
        "content": "Say, did you finish reading that book I lent you?"
      }
    }

    安全性和验证

    在 ActivityPub 中,服务器应该验证收到的内容,以防止内容欺骗攻击。例如,当服务器接收到一个 Like 活动时,应该验证该活动的 id 是否存在并且是一个有效对象。

    结论

    ActivityPub 通过提供灵活的客户端到服务器和服务器到服务器的协议,使得创建、更新和分发内容变得更加简单和高效。它的去中心化特性也为社交网络带来了更多的自由和可能性。如果您对构建去中心化社交网络感兴趣,ActivityPub 将是一个非常有价值的工具。

    希望这篇文章能帮助您更好地理解 ActivityPub 及其在去中心化社交网络中的重要作用。

人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 借一步网 沪ICP备2024052574号-1