- 博客(264)
- 收藏
- 关注
原创 KTransformers实战DeepSeek-R1-1.58bit量化模型
技术背景在上一篇文章中,我们介绍过KTransformers大模型高性能加载工具的安装和使用方法。但是当时因为是在一个比较老旧的硬件上面进行测试,其实并没有真正的运行起来。现在补一个在KTransformers下运行DeepSeek-R1的1.58bit量化模型的实战测试。软硬件设施显卡:NVIDIA GeForce RTX 4080(只需1张)CPU:Intel(R) Xeon(R)...
2025-03-12 15:34:00
602
原创 Ollama+DeepSeek+SlackBot
技术背景想必最近有在部署DeepSeek大模型的人,看标题就知道这篇文章在做什么事情了。由于Ollama对于IP的监听缺乏安全防护,并且内网部署的Ollama模型对于外网来说也是不可见的,而如果使用一些公网API,又存在隐私数据泄露的风险。这里提供一个方案:使用端到端加密的通讯软件,将消息内容转为token传输给Ollama本地部署的模型,然后接收token作为消息,通过加密通讯返回给用户。但...
2025-03-10 10:33:00
836
原创 Cython与CUDA之Add
技术背景在前一篇文章中,我们介绍过使用Cython结合CUDA实现了一个Gather算子以及一个BatchGather算子。这里我们继续使用这一套方案,实现一个简单的求和函数,通过CUDA来计算数组求和。由于数组求和对于不同的维度来说都是元素对元素进行求和,因此高维数组跟低维数组没有差别,这里我们全都当做是一维的数组输入来处理,不做Batch处理。头文件首先我们需要一个CUDA头文件cud...
2025-03-05 09:59:00
623
原创 Cython与CUDA之BatchGather
技术背景在前面一篇文章中,我们介绍过Cython+CUDA框架下实现一个简单的Gather算子的方法。这里演示Gather算子的升级版本实现——BatchGather算子。不过这里只是加了一个Batch维度,并没有添加其他的维度,例如Dimension维度,在这里暂不考虑。CUDA头文件这里我们保留了原本的Gather部分,只添加一个BatchGather的运算,以下为cuda_index...
2025-03-03 15:54:00
888
原创 DeepSeek满血版测试
技术背景很多厂商以次充好,用蒸馏版DeepSeek冒充满血版。本文提供一些收集的问题集,可以用于测试是否满血DeepSeek。经过实际测试,国内厂商中只有满血版DeepSeek可以全对。但是各厂商后续有可能经过联网更新,所以本集合有一定的时效性。问题一在平面四边形ABCD中,\(AB = AC = CD = 1\), \(\angle ADC = 30^{\circ}\), \(\angl...
2025-02-28 16:34:00
920
原创 CUDA时长统计
技术背景前面的一篇文章中介绍了在CUDA中使用宏来监测CUDA C函数或者Kernel函数的运行报错问题。同样的思路,我们可用写一个用于统计函数运行时长的宏,这样不需要使用额外的工具来对函数体的性能进行测试。文件准备因为这里的宏改动,主要涉及CUDA头文件和CUDA文件的修改,所以Cython文件和Python文件还有异常捕获宏我们还是复用这篇文章里面用到的。测试内容是,定义一个原始数组和...
2025-02-28 09:45:00
332
原创 Cython与CUDA之Gather
技术背景Cython是Python的一个超集,可以使用Pythonic的语法写出接近于C语言的性能,可以用于将Python编程过程中遇到的Bottleneck模块改写成Cython以达到加速的效果。前面写过一些关于Cython加速计算的文章。又因为Cython编译过程中会先转为C语言代码,然后再编译为动态链接库或者可执行文件,所以很自然的可以在Cython中调用C语言函数。用这种方法,还可以直...
2025-02-27 10:20:00
674
原创 CUDA异常捕获
技术背景在CUDA编程中有可能会遇到一些相对比较隐蔽的报错,但是直接编译运行cu文件是不显现的。那么可以通过添加一个用于检查的宏,来监测CUDA程序运行过程中可能出现的报错。error.cuh我们在CUDA头文件中实现这个宏:#pragma once#include <stdio.h>#define CHECK(call) do{const cudaError_t er...
2025-02-25 15:55:00
395
原创 bin格式转safetensors
技术背景本文主要介绍在Hugging Face上把bin格式的模型文件转为safetensors格式的模型文件,并下载到本地的方法。bin转safetensors首先安装safetensors:$ python3 -m pip install safetensors --upgrade然后把Github的safetensors仓库克隆下来:$ git clone https://gi...
2025-02-24 15:40:00
362
原创 DeepSeek本地性能调优
技术背景大模型性能调优是一个很复杂的工程,涉及到很多细节,如果真要对模型动刀子,还需要对模型和数据集本身有非常好的理解。这里我们仅仅考虑模型加载过程中,可以优化的一些参数配置。关于DeepSeek在本地的部署,以及PageAssist插件的使用,可以参考DeepSeek合集。调优思路一句话总结一下调优思路,如果你已经尝试过了,那么可以略过本文:GPU内存 > 多GPU内存 >...
2025-02-21 10:53:00
1382
原创 Ollama模型迁移
技术背景在前面的一些文章中,我们介绍过使用Ollama在Linux平台加载DeepSeek蒸馏模型,使用Ollama在Windows平台部署DeepSeek本地模型。除了使用Ollama与模型文件交互,还可以使用llama.cpp和KTransformer这样的。也有一些ChatBox、AnythingLLM和PageAssist这样的客户端工具推荐。这里我们考虑到这样的一个使用场景,在我们...
2025-02-20 16:34:00
989
原创 DeepSeek智能编程
技术背景DeepSeek开源之后,让大家意识到了即时是在自己硬件性能一般的本地环境,也能够部署和使用大语言模型,真正实现了大模型的“私有化”。而私有化大模型之后,自然是考虑生产力的私有化。例如,如何使用大模型作为一个工具来进行编程?本文将要介绍两种不同的人工智能编程方法。Cursor的安装与使用第一种方法,是使用Cursor来进行编程,是一个跟VSCode很像的IDE,优点是支持了很多模型...
2025-02-19 17:45:00
1025
原创 大模型工具KTransformer的安装
技术背景前面写过几篇关于DeepSeek的文章,里面包含了通过Ollama来加载模型,以及通过llama.cpp来量化模型(实际上Llama.cpp也可以用来加载模型,功能类似于Ollama)。这里再介绍一个国产的高性能大模型加载工具:KTransformer。但是本文仅介绍KTransformer的安装方法,由于本地的GPU太老,导致无法正常的运行KTransformer,但是编译安装的过程...
2025-02-19 10:28:00
966
原创 DeepSeek模型量化
技术背景大语言模型(Large Language Model,LLM),可以通过量化(Quantization)操作来节约内存/显存的使用,并且降低了通讯开销,进而达到加速模型推理的效果。常见的就是把Float16的浮点数,转换成低精度的整数,例如Int4整数。最极限的情况下,可以把参数转化成二值Bool变量,也就是只有0和1,但是这种大幅度的量化有可能导致模型的推理效果不佳。常用的是,在70...
2025-02-17 14:11:00
1151
原创 DeepSeek+PageAssist实现本地大模型联网
技术背景在前面的几篇博客中,我们分别介绍过在Ubuntu上部署DeepSeek、在Windows上部署DeepSeek、使用AnythingLLM构建本地知识库的方法,其中还包含了ChatBox的基本安装和使用。这里我们要介绍的是PageAssist,一个包含了大模型Chat、网络检索和知识库搭建的浏览器插件,不依赖于操作系统,而且功能配置非常丰富,可玩性很高,推荐使用。安装PageAssi...
2025-02-14 17:02:00
1317
原创 DeepSeek+Zotero
技术背景在DeepSeek系列文章中,我们已经分别介绍过关于DeepSeek在Ubuntu Linux平台和Windows平台上的本地部署方案,以及Ollama、ChatBox和AnythingLLM等辅助工具的使用。即使不使用DeepSeek-R1的全量模型,在DeepSeek的本地部署的蒸馏模型,结合AnythingLLM已经可以构建本地化的知识库。但是如果在科研过程中要专注于使用PDFC...
2025-02-11 14:19:00
678
原创 DeepSeek部署本地知识库
技术背景在前面的两篇文章中,分别介绍过Ubuntu上关于DeepSeek的部署以及Windows平台关于DeepSeek的部署。其中内容包含了Ollama的下载安装和基本使用、DeepSeek模型文件的下载,以及使用ChatBox导入Ollama本地模型进行本地对话的方法。这里再介绍一个使用AnythingLLM构建本地知识库的方法,本地知识库跟ChatBox两种对话模式的主要不同点在于,Ch...
2025-02-08 15:16:00
1610
原创 Windows11本地部署DeepSeek加速
技术背景在上一篇文章中我们介绍了在Ubuntu Linux操作系统上部署了一个DeepSeek-R1:14B,再通过其他电脑远程调用模型进行生成的方法。这里我们介绍一下Windows11安装Ollama+DeepSeek-R1模型的加速方法,因为这几天DeepSeek实在太火了,导致官方模型下载渠道网络不是很稳定,但其实有其他的方法可以加速这个下载过程。安装Ollama跟Ubuntu Li...
2025-02-07 15:12:00
885
原创 Ubuntu Linux部署DeepSeek
技术背景DeepSeek是这段时间最热门的话题之一,其蒸馏模型可以实现低成本而高质量的推理,使得我们现在可以在本地小型化的硬件上也用上大模型这一AI利器。本文主要介绍通过Ollama来部署DeepSeek R1模型的方法,由于网络环境的问题,过程相比于普通的安装方案可能略有改动。安装Ollama以下是DeepSeek生成的关于Ollama的介绍的一个片段:Ollama 是一个开源工具,...
2025-02-06 10:16:00
1156
原创 使用SpongeExt快捷完成CudaSPONGE结合PySAGES的增强采样
技术背景在前面的一些文章中,我们介绍过关于CudaSPONGE的安装和基础使用方法,CudaSPONGE提供的Python接口,PySAGES增强采样软件的基本使用方法,还有一篇关于CudaSPONGE和PySAGES相结合的文章,并且做了一些简单的CudaSPONGE结合PySAGES的性能测试。其中因为CudaSPONGE与PySAGES的接口实际上是可以多场景共用的,因此考虑把这部分的接...
2025-01-23 10:20:00
728
原创 Markdown转Beamer进阶
技术背景在前面的一篇文章中,我们介绍过Markdown转Beamer的基本方法。通过这个方案,我们可以只写普通的Markdown文档,甚至可以用Github或者Gitee进行保存和协同编辑。然后在本地环境中通过pandoc进行编译构建,最终可以生成一个Beamer风格的pdf文件。这里我们不讨论到底是用PPT写比较好,还是Beamer比较好,抑或者是Markdown,我们只探讨Markdown...
2025-01-20 17:27:00
887
原创 CudaSPONGE与PySAGES初步性能测试
技术背景在前面的一篇博客中,我们介绍过CudaSPONGE的基础使用方法、CudaSPONGE调用Python接口函数以及CudaSPONGE结合增强采样软件PySAGES的使用方法。在这篇文章中,我们将介绍CudaSPONGE和PySAGES相结合的初步性能测试结果。 测试案例我们沿用这一篇文章中的测试案例,对一个简单的多肽体系的两个二面角参数空间执行MetaDynamics增强采...
2025-01-20 16:04:00
639
原创 Markdown转Beamer
技术背景在早期我写过一些文章介绍用RMarkdown写Beamer,还有相应的TinyTex配置。后来Xie Yihui大神发文离开了RMarkdown核心团队,想来中文社区的支持力度和活跃度可能会有所降低。于是干脆直接用pandoc,把普通的markdown文件编译成Latex Beamer PDF格式。pandoc的安装这里给的是Ubuntu Linux操作系统的pandoc安装方案:...
2024-12-25 16:54:00
836
原创 PySAGES结合CUDA SPONGE增强采样
技术背景在前面的一篇博客中,我们介绍过PySAGES这个增强采样软件的基本安装和使用方法。该软件类似于Plumed是一个外挂增强采样软件,但是PySAGES是基于Python语言和Jax框架来实现的,在性能上有一定的优势。这里我们结合PySAGES的易开发特性,和CUDA SPONGE的高性能特性,做一个简单的扩展将二者联合起来进行分子动力学模拟与增强采样。耦合框架在前面的文章中我们介绍过...
2024-12-23 09:38:00
916
原创 PCA主成分分析的Python实现
技术背景PCA主成分分析在数据处理和降维中经常被使用到,是一个非常经典的降维算法,本文提供一个PCA降维的流程分解,和对应的Python代码实现。二维数据生成如果没有自己的测试数据,我们可以生成一些特殊的随机数据点。例如我们使用Numpy的均匀随机数生成一系列二维的数据点\(\mathbf{r}=\left(x,y\right)\),其中数据点分布在一个椭圆内:\[x^2+4y^2\le...
2024-12-06 11:12:00
763
原创 Numpy本征值求解
技术背景Numpy是一个Python库中最经常被用于执行计算任务的一个包,得益于其相比默认列表的高性能表现,以及易用性和可靠性,深受广大Python开发者的喜爱。这里介绍的是使用Numpy计算矩阵本征值和本征矩阵的方法。求解问题本征问题是求解形如:\(\mathbf{A}\mathbf{v}=\lambda\mathbf{v}\)的方程,其中\(\mathbf{A}\)为已知矩阵,\(\m...
2024-12-04 10:51:00
316
原创 CudaSPONGE之Python接口
技术背景在上一篇博客中我们介绍了CudaSPONGE的基本安装和使用方法。为了性能考虑,CudaSPONGE是基于纯CUDA C开发的,但是现在很多轮子都是Python开发的。为兼容更多的框架和平台,CudaSPONGE也提供了相应的Python API,方便Python开发者调用与二次开发。接口逻辑虽然安装和操作的过程并不复杂,但是这里面的交互逻辑还是得大概梳理一下。CudaSPONGE...
2024-11-28 11:06:00
261
原创 CudaSPONGE高性能GPU分子模拟
技术背景CudaSPONGE是基于CUDA C开发的一款纯GPU分子动力学模拟软件,具有模块化和高性能的特点。官方基本介绍内容如下:分子动力学(Molecular Dynamics, MD)模拟是化学、物理学、生物学、材料科学和许多其他领域的有用工具。在过去 40 年中,人们开发了各种高效的计算算法和MD程序,用于研究日益复杂和大型系统的动力学,如RNA 聚合酶、细胞膜中的膜蛋白、SARS...
2024-11-27 16:10:00
326
原创 Jax Jit模式下的Array输出
问题背景在Python编程中,最简单的Debug方法就是print了,直接print出来,有什么问题一目了然。虽然也有log相关的库和类似于Spyder等IDE有专业的Debug模式,但是print还是最方便的,对于小规模应用场景。Jax的Jit即时编译模式,使得函数在被调用的时候才会执行编译,很大程度上可以方便快捷的优化程序调试性能。但也有个问题就是,如果在Jit模式下,我们用print打...
2024-11-26 17:01:00
183
原创 PySAGES实记
技术背景PySAGES是一款可以使用GPU加速的增强采样插件,它可以直接对接到OpenMM上进行增强采样分子动力学模拟,这里我们测试一下相关的安装,并尝试跑一个简单的增强采样示例。 安装PySAGESPySAGES本身可以使用pip进行安装: python3 -m pip install git+https://github.com/SSAGESLabs/PySAGES.git...
2024-11-26 14:55:00
402
原创 OpenMM的安装与使用
技术背景OpenMM是一款基于Python开发的开源分子动力学模拟软件,这几年因为AlphaFold的缘故,使得这个软件的热度有了不少提升。并且可以使用GPU硬件加速,所以性能上也不赖。这里介绍一下该软件的基本安装和使用方法,并附带一个真空蛋白体系的能量极小化示例。安装OpenMM一般这个软件首推是使用conda安装,但是这里我个人比较推荐使用python-pip安装,原因是这样的,我先尝...
2024-11-22 15:44:00
964
2
原创 Jax中关于NonZero的使用
技术背景在Jax的JIT即时编译中,会追踪每一个Tensor的Shape变化。如果在计算的过程中出现了一些动态Shape的Tensor(Shape大小跟输入的数据有关),那么就无法使用Jax的JIT进行编译优化。最常见的就是numpy.where这种操作,因为这个操作返回的是符合判定条件的Index序号,而不同输入对应的输出Index长度一般是不一致的,因此在Jax的JIT中无法对该操作进行编...
2024-11-21 11:15:00
681
原创 Conda环境Git Pull报错
问题背景用conda新建了一个python3.9的虚拟环境,经常出现跟动态链接库相关的报错,这次连使用git pull都出现了一个奇怪的报错:$ git pull/usr/lib/git-core/git-remote-https: symbol lookup error: /lib/x86_64-linux-gnu/libp11-kit.so.0: undefined symbol: f...
2024-11-19 15:15:00
645
原创 MindSpore-2.4版本中的一些新特性
技术背景在前面的一篇博客中我们介绍了MindSpore-2.4-gpu的安装和其中可能出现的一些问题。这里我们在安装完成之后,可以尝试使用一些MindSpore新版本的特性。那么在安装之后,如果是使用VSCode作为IDE,可以使用ctrl+shift+P快捷键,然后搜索python:sele将Python解释器切换到我们所需要的最新MindSpore环境下。设备管理和资源监测在minds...
2024-11-19 10:59:00
894
原创 解决MindSpore-2.4-GPU版本的安装问题
问题背景虽说在MindSpore-2.3之后的版本中不在正式的发行版中支持GPU硬件后端,但其实在开发分支版本中对GPU后端是有支持的: 但是在安装的过程中可能会遇到一些问题或者报错,这里复现一下我的Ubuntu-20.04环境下的安装过程。Pip安装基本的安装流程是这样的,首先使用anaconda创建一个python-3.9的虚拟环境,因为在MindSpore-2.4版本之后不再...
2024-11-18 10:35:00
1179
原创 Git推送报错Authentication failed
问题背景在某一次的Git推送时,配置好commit信息之后,执行push操作的时候出现了这样的一个报错信息:$ git pushfatal: could not read Username for 'https://gitee.com': terminal prompts disabledfatal: could not read Username for 'https://gitee....
2024-11-08 09:23:00
512
原创 Jax中关于Device ID的配置
问题背景在不同的框架中对于Device ID的配置方法都略有不同,这里提两种Jax中配置Device ID的方法。配置环境变量这个方法是比较流行的,直接在环境变量里面配置:export CUDA_VISIBLE_DEVICES=1这样就使得当前shell下运行的程序只能识别到1号显卡,一般就是第二张显卡了。如果需要配置多张显卡,类似的可以指定:export CUDA_VISIBLE_...
2024-11-05 16:47:00
304
原创 MindSponge分子动力学模拟——增强采样(2024.11)
技术背景关于增强采样(Enhanced Sampling)算法的具体原理,这里暂不做具体介绍,感兴趣的童鞋可以直接参考下这篇综述文章:Enhanced sampling in molecular dynamics。大致的作用就是,通过统计力学的方法,使得目标分子的CV(Collective Variables)具有一个尽可能大的采样子空间,并且可以将其还原回真实的自由能面。常用的增强采样算法,...
2024-11-01 15:17:00
796
原创 PME算法简单Python实现
技术背景在前面的两篇博客中,我们分别介绍了Ewald算法求解静电势能和基于格点拉格朗日插值法的PME算法。在多种计算优化算法(Ewald求和、快速傅里叶变换、格点拉格朗日插值、截断近似)的加持下,使得我们不需要在实空间进行大量的迭代,也可以得到一个近似收敛的静电势能结果。相关的PME计算公式为:\[\begin{align*}E&=E^S+E^L-E^{self}\\&=...
2024-10-31 10:52:00
869
原创 格点拉格朗日插值与PME算法
技术背景在前面的一篇博客中,我们介绍了拉格朗日插值法的基本由来和表示形式。这里我们要介绍一种拉格朗日插值法的应用场景:格点拉格朗日插值法。这种场景的优势在于,如果我们要对整个实数空间进行求和或者积分,计算量是随着变量的形状增长的。例如分子动力学模拟中计算静电势能,光是计算电荷分布函数都是一个\(O(N^2)\)的计算量,其中\(N\)表示点电荷数量。而如果我们对空间进行离散化,划分成一系列的格...
2024-10-18 09:29:00
847
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人