Deepseek开源周第三天:DeepGEMM发布

Deepseek开源周第三天:DeepGEMM发布

前言

上周deepseek宣布,将在本周陆续发布五个开源项目,这些库已经在生产环境中经过了记录、部署和实战测试。

今天是deepseek开源周的第三天,deepseek发布了一个名为 DeepGEMM 的项目,截止发稿前,已有 3.2K 的 star

github地址:https://github.com/deepseek-ai/DeepGEMM

在人工智能和高性能计算领域,矩阵乘法(General Matrix Multiplication,简称 GEMM)是许多算法的核心运算。

DeepGEMM 的项目,旨在为 FP8(8 位浮点数)矩阵乘法提供高效、简洁的实现。

什么是 FP8 和矩阵乘法?

矩阵乘法是线性代数中的基本运算,用于计算两个矩阵的乘积。

在深度学习中,矩阵乘法被广泛应用于神经网络的前向传播和反向传播过程中。

然而,传统的 32 位浮点数(FP32)或 16 位浮点数(FP16)矩阵乘法在计算效率和内存占用方面存在瓶颈。

为了进一步提升计算效率和降低能耗,研究人员开始探索更低精度的浮点数格式。

FP8 是一种 8 位浮点数格式,它通过减少精度来换取更快的计算速度和更低的内存带宽需求。

尽管精度降低,但在许多深度学习任务中,FP8 仍然能够提供足够的数值精度,同时显著提升性能。

DeepGEMM 是什么?

DeepGEMM 是一个专注于 FP8 矩阵乘法的开源库,由 DeepSeek 团队开发。

它旨在为深度学习中的矩阵乘法提供高效、简洁的实现,同时支持普通矩阵乘法和混合专家模型(MoE)中的分组矩阵乘法。

DeepGEMM 的核心优势在于其简洁的设计和高效的实现。

它仅包含一个约 300 行代码的核心内核函数,这使得它易于理解和学习。

此外,DeepGEMM 采用了运行时编译(Just-In-Time,JIT)技术,无需在安装时进行编译,所有内核都在运行时动态编译,从而更好地适应不同的硬件和计算需求。

DeepGEMM 的技术亮点

  1. 高效利用 NVIDIA Hopper 架构

DeepGEMM 专为 NVIDIA Hopper 架构设计,充分利用了 Hopper 引入的 Tensor Memory Accelerator(TMA)特性。

TMA 是一种用于加速数据传输的硬件特性,能够显著提升矩阵乘法的性能。

  1. 细粒度缩放技术

在 FP8 计算中,由于精度较低,可能会导致数值溢出或下溢。

DeepGEMM 通过细粒度缩放技术解决了这一问题,确保计算的稳定性。

  1. 分组矩阵乘法支持

DeepGEMM 支持分组矩阵乘法(Grouped GEMM),这对于混合专家模型(MoE)尤为重要。

MoE 是一种大规模并行模型架构,通过将输入数据分配给不同的“专家”进行处理,从而提高模型的效率和可扩展性。

DeepGEMM 提供了针对 MoE 的优化实现,支持连续布局(contiguous layout)和掩码布局(masked layout)两种场景。

  1. 运行时编译(JIT)设计

DeepGEMM 采用 JIT 编译技术,所有内核在运行时动态编译。

这种设计不仅减少了安装时的复杂性,还允许在运行时根据矩阵形状和硬件特性进行优化,进一步提升性能。

  1. 性能优化

DeepGEMM 在多个矩阵形状上达到了与专家优化库相当甚至更高的性能。

例如,在某些测试中,DeepGEMM 的速度比基于 CUTLASS 的实现快 1.4 到 2.7 倍。

DeepGEMM 的应用场景

DeepGEMM 的高效实现使其在多个领域具有广泛的应用潜力:

  1. 深度学习推理

在深度学习模型的推理阶段,DeepGEMM 可以显著提升计算效率,降低延迟,尤其适用于大规模模型和实时应用。

  1. 混合专家模型(MoE)

MoE 是一种高效的并行模型架构,DeepGEMM 提供了针对 MoE 的优化支持,能够显著提升其性能。

  1. 高性能计算

在高性能计算领域,DeepGEMM 的低精度矩阵乘法可以用于加速科学计算和大规模数据分析。

总结

DeepGEMM 的开源为深度学习和高性能计算领域带来了新的可能性。

它不仅提供了高效、简洁的 FP8 矩阵乘法实现,还通过运行时编译和细粒度缩放技术,解决了低精度计算中的关键问题。

DeepGEMM 的开源也为研究人员和开发者提供了一个学习和优化 Hopper 架构的绝佳资源。

我们将持续关注接下来几天的项目发布,为读者带来第一手的技术资讯。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/24538.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ALM研发管理:全新甘特图,让项目管理更高效

在软件开发领域,甘特图一直是项目管理的重要工具。通过可视化的任务时间线,清晰地展示项目的进度和关键时间节点,帮助团队成员快速理解项目状态,协调工作进度,从而有效提升项目管理的效率。无论是需求分析、设计、开发…

mac os 使用 root 登录

打开系统偏好设置。进入“用户与群组”面板。点按锁按钮输入密码,再点最下面的登录选项。在右边面板的下方你会看见一行字:”网络账户服务器:加入 ”,点击加入,就可以打开目录实用工具了。 添加Root用户 正常情况下目…

【C++笔记】C++11智能指针的使用及其原理

【C笔记】C11智能指针的使用及其原理 🔥个人主页:大白的编程日记 🔥专栏:C笔记 文章目录 【C笔记】C11智能指针的使用及其原理前言1.智能指针的使用场景分析2. RAII和智能指针的设计思路3. C标准库智能指针的使用4. 智能指针的原…

SQL命令详解之操作数据库

操作数据库 SQL是用于管理和操作关系型数据库的标准语言。数据库操作是SQL的核心功能之一,主要用于创建、修改和删除数据库对象,如数据库、表、视图和索引等。以下是SQL中常见的数据库操作命令及其功能简介: 1. 查询数据库 查询所有的数据库…

轨迹控制--odrive的位置控制---负载设置

轨迹控制 此模式使您可以平滑地使电机旋转,从一个位置加速,匀速和减速到另一位置。 使用位置控制时,控制器只是试图尽可能快地到达设定点。 使用轨迹控制模式可以使您更灵活地调整反馈增益,以消除干扰,同时保持平稳的运…

mysql.gtid_executed表、gtid_executed变量、gtid_purged变量的修改时机

1.2 mysql.gtid_executed表、gtid_executed变量、gtid_purged变量的修改时机 1.2.1 定义 mysql.gtid_executed表:GTID持久化的介质,GTID模块初始化的时候会读取这个表作为获取gtid_executed变量的基础。 gtid_executed变量:表示数据库中执行…

CONTACT 在 Ubuntu 系统中的安装与使用

CONTACT 概述 CONTACT 是研究三维摩擦接触问题的高级仿真程序,如轮轨之间、滚动轴承的接触问题。CONTACT 提供了完整且详细的解决方案,可集成到多体仿真软件中。其计算质量可与有限元分析相近,但计算时间仅为后者的千分之一。CONTACT 采用半…

C#连接sql server

连接时,出现如下提示: ERROR [IM014] [Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配 原因是odbc的驱动和应用程序的架构不一致。我的odbc如下所示: 显示为64位,而c#程序显…

数据结构之各类排序算法代码及其详解

1. 排序的概念 排序是一种常见的算法概念,用于将一组数据按照特定的顺序进行排列。排序算法的目的是将一组数据按照递增或递减的顺序重新排列。常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。排序算法的选择通常取决于数据规模、数据分布…

山东大学软件学院人工智能导论实验之知识库推理

目录 实验目的: 实验代码: 实验内容: 实验结果 实验目的: 输入相应的条件,根据知识库推理得出相应的知识。 实验代码: def find_data(input_process_data_list):for epoch, data_process in enumerat…

【开源免费】基于SpringBoot+Vue.JS美食烹饪互动平台(JAVA毕业设计)

本文项目编号 T 219 ,文末自助获取源码 \color{red}{T219,文末自助获取源码} T219,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

在线VS离线TTS(语音合成芯片)有哪些优势-AIOT智能语音产品方案

离线 TTS 存在语音质量欠佳、音色选择有限、语言支持单一更新困难、占用资源多、适应性差、难以个性化定制等痛点 01更新维护困难 由于是离线模式,难以及时获取最新的语音数据和算法更新,无法得到持续改进。 02占用本地资源 需要在设备本地存储较大的…

530 Login fail. A secure connection is requiered(such as ssl)-java发送QQ邮箱(简单配置)

由于cs的csdN许多文章关于这方面的都是vip文章,而本文是免费的,希望广大网友觉得有帮助的可以多点赞和关注! QQ邮箱授权码到这里去开启 授权码是16位的字母,填入下面的mail.setting里面的pass里面 # 邮件服务器的SMTP地址 host…

SpringBoot整合Swagger

一、Swagger简介 Swagger 是一种 API 文档工具,可以通过生成 API 文档来提高开发者的工作效率,同时也可以提高 API 的可读性和可维护性。Spring Boot 可以与 Swagger 进行整合,以方便生成 API 文档。下面介绍一下如何使用 Spring Boot 整合 S…

【图形学入门笔记】线性代数的本质

【笔记未完待续】如果我的分享对你有帮助,请记得点赞关注不迷路。 视频源地址:https://www.youtube.com/watch?vfNk_zzaMoSs 作者:3Blue1Brown 此处仅做个人笔记使用。 01 - 向量究竟是什么? 线性代数中最基础、最根源的…

can数据记录仪在汽车路测中扮演着**关键角色*

can数据记录仪主要用于实时采集、存储和分析车辆运行中的多维度数据,帮助工程师优化车辆性能、验证安全性、改进驾驶体验,并支持法规合规性测试。 can数据记录仪在路测中扮演几个关键角色,如下, 动力系统监控:记录发…

使用前端 html css 和js 开发一个AI智能平台官网模板-前端静态页面项目

最近 AI 人工智能这么火,那必须针对AI 做一个 AI方面的 官方静态网站练手。让自己的前端技术更上一层楼,哈哈。 随着人工智能技术的不断发展,越来越多的AI应用开始渗透到各行各业,为不同领域的用户提供智能化解决方案。本网站致力…

仿真环境下实现场景切换、定位物体和导航行走

1. 代码(以微波炉为例) from ai2thor.controller import Controller import math import randomdef distance_2d(pos1, pos2):"""计算两点之间的二维欧几里得距离(忽略Z轴)"""return math.sqrt((p…

1.测试策略与计划设计指南

1.介绍 1.1项目介绍 完整项目组成:1.基于K8S定制开发的SaaS平台;2.多个团队提供的中台服务(微服务);3.多个业务团队开发的系统平台。涉及多个项目团队、上百个微服务组件。 测试在所有团队开发测试后,自己搭建测试环境&#xff0c…

LeetCode热题100- 最小栈【JavaScript讲解】

“日日行,不怕千万里;常常做,不怕千万事。” —— 《格言联璧处事》 oi!!栈的知识点在这里!!!点击跳转!!! 最小栈讲解目录: 题目&…