DeepSeek R1 671b 满血版部署笔记
前言
DeepSeek R1 是最近大火的大语言模型,主要是可以比肩 o1 的性能以及完全开源。之前一篇文章所说,我手里有两台 1T 内存的 EPYC 机器,因此正好可以用来部署 R1。本文主要记录一下利用 llama.cpp 部署过程中的经验。
TL;DR: 对于 llama.cpp 以及衍生的 ollama 部署方案,推理速度基本和内存带宽成线性,符合 Roofline 模型。
DeepSeek R1 是最近大火的大语言模型,主要是可以比肩 o1 的性能以及完全开源。之前一篇文章所说,我手里有两台 1T 内存的 EPYC 机器,因此正好可以用来部署 R1。本文主要记录一下利用 llama.cpp 部署过程中的经验。
TL;DR: 对于 llama.cpp 以及衍生的 ollama 部署方案,推理速度基本和内存带宽成线性,符合 Roofline 模型。
自从开始读 Ph.D.
之后,对算力的要求逐步增长,因此一直想购入强劲的服务器用于科研玩装机,感谢近几年的
AMD 强势,我居然只用了大概 4 万元就拿下了两台 EPYC 7B13 64C128T + 1T
内存的工作站,这篇文章就来简单分享一下整个实战过程和一些经验。
总算是通过了 ETH Zurich Master in Computer Science 除了毕设外最后一门课,借着这个机会来介绍一下这个项目的体验还有课程评价。
(下文会用 MSCS
来代替
ETH Zurich Master in Computer Science
)
Datalog 是一种由 Prolog 分化而来的逻辑编程语言,相比 Prolog 最大的不同在于 Datalog 对于语法做出了很多限制因此是非图灵完全的,然而 Datalog 仍然在数据库和程序分析中有着广泛的应用。Souffle 是 Datalog 的高效实现之一,之前在北大熊英飞老师的公开课上曾经见过但是那个时候不理解也不太会写,最近修程序分析的时候又一次遇到,大作业被迫写了一千多行,因此本文就是用来记录一下 Souffle 编程的经验。
本文的代码可以在 Souffle 的在线编译器中运行。
For English version of this post, see this.
For English version of this post, see here.
一般来说,一个用 C 写的库可能会暴露接收一个函数指针作为回调函数,比如:
1 | typedef void (*callback_t)(void* data); |
然后我们可能会这样使用这个接口:
1 | typedef struct Context { |
但是这样仍然不太方便,因为我们需要手动管理 data 指针的生命周期,一不小心就有可能会内存泄漏。
最近研究 Chromium 和 HTML 标准,不可避免的就接触到了 Web IDL,这里就总结性的聊聊吧,也当是学习笔记了。
本文几乎就是照搬现在 Web IDL
的标准,但也不是简单的翻译也翻译不准。