- 博客(288)
- 收藏
- 关注
原创 解决Error 500: named symbol not found报错问题
本文介绍了一个可能在Win11的自动更新之后出现的严重问题:由于显卡驱动被更新了,原本安装在WSL2和Docker中的GPU环境因为版本不适配的问题,会无法识别GPU(虽然在Nvidia-Smi中可以看到,也可以用nvcc编译,但正常使用会报错)。通过手动降驱动版本,可以解决该问题。
2026-01-13 10:37:00
359
原创 使用Python免费合并PDF文件
本文介绍了一个使用python进行免费pdf文档合并的实现方案。使用该方案,还可以针对同一个路径下的多个文件进行合并操作,还可以利用Python的正则表达式对文件名进行筛选。综合来说,该工具对于熟练使用Python的人来说,是一大办公福音。
2025-12-18 09:24:00
357
原创 关于分子力场中二面角项的思考
要构成一个二面角,一般需要4个原子。因为二面角是力场中的成键相互作用,因此在一个二面角中至少存在这三根键:。我们知道,由三个不在一条直线上的点,就可以确定一个平面。在二面角中,所谓的“二面”,指的是和这两个平面。换句话说,计算二面角,就是计算和这两个平面的夹角\(\psi\)。一般的计算流程就是,先计算出来平面和的法向量,然后求两个法向量之间的夹角\(\phi\),就可以得到两个平面之间的夹角。那么,首先我们要使用四个点的位置信息去计算平面法向量。
2025-11-21 11:08:00
703
原创 弹簧的弹力为什么沿着弹簧?
本文通过一个简单的微分计算,说明了为什么弹簧对两头的作用力方向总是沿着弹簧方向的。虽然是一个固有的认知,但其实也可以通过简单的计算来进行论证。
2025-11-13 15:45:00
752
原创 使用conda安装gcc和g++
本文介绍了一种使用conda来安装gcc和g++编译工具的方法,可以不需要root权限,也能够在本地自己的路径下配置相应的编译器版本。
2025-11-03 16:38:00
224
原创 一个纯净的自动微分框架—autograd
本文介绍了一个可以基于CPU和numpy的自动微分计算框架。如果只是需要使用自动微分计算的功能,就可以直接在CPU环境下简便的部署,快捷的完成环境搭建。
2025-09-27 09:16:00
391
原创 Torch中的tensor size
本文重点介绍了一下如何在PyTorch中去计算一个高维tensor的大小,也就是元素的总数。在其他框架中我们需要使用size函数来获取,而在PyTorch框架中这个接口被调整为numel,本文给出了两个具体代码示例。
2025-09-25 12:31:00
346
原创 Blelloch并行扫描算法
本文介绍了一个可以用于并行化串行累计操作的Blelloch算法,可以通过用空间换时间+并行计算的方法,来降低特定计算的时间复杂度。这里我们给出了算法原理的大致介绍,以及基于Numpy的算法代码实现。
2025-09-18 10:46:00
523
原创 关闭Ollama开机启动项
Ollama在本地普通算力机器上部署DeepSeek等大模型,有一定的生态优势。但是由于软件本身的一些策略问题,Windows平台的Ollama总是会随系统开机自动启动,还没有设置界面可以关闭。这里提供一种方法,可以在Windows平台永久关闭Ollama的开机自动启动功能。
2025-08-12 09:16:00
866
原创 关于nan的大小判定规则
本文通过几个简单的代码示例,展示了一下NAN在PyTorch框架下形成的原因。通过了解这个原因和规则,有助于解决在深度学习开发和训练过程中出现的NAN的问题。
2025-07-21 17:46:00
272
原创 PyTorch中的take_along_dim
接前面一篇take_along_axis的文章,本文主要介绍在PyTorch框架下,功能基本一样的函数take_along_dim。二者除了命名和一些关键词参数不一致之外,用法是一样的。需要注意的是,两者都要求输入的数组和索引数组维度数量一致。在特定场景下,需要手动进行扩维。
2025-07-17 10:18:00
520
原创 PyTorch中的张量逆序问题
本文简单的介绍了一个在Pytorch中对张量进行逆序操作的方法相比于其他的框架,例如numpy和mindspore等的区别。在其他框架中我们可以直接使用slice的方法对一个张量做逆序,但是在Pytorch中,可能需要使用到一个flip函数。
2025-07-10 10:16:00
464
原创 PyTorch中实现开立方
本文介绍了在PyTorch中直接使用幂次函数计算有可能导致的计算结果异常的问题。由于PyTorch中并未像Numpy和MindSpore一样直接支持cbrt开立方函数,因此这里也提供了一个在PyTorch中计算开立方的函数。
2025-06-25 17:56:00
419
原创 tensor_scatter_add算子异同点
本文介绍了MindSpore中的tensor_scatter_add算子的用法,可以对一个多维的tensor在指定的index上面进行加和操作。在PyTorch中虽然也有一个叫scatter_add的算子,但是本质上来说两者是完全不一样的操作。
2025-06-20 15:49:00
875
原创 gather算子大不同
本文通过2个实际的案例,演示了一下gather算子在MindSpore框架下PyTorch框架下的异同点。两者的输入都是tensor-axis-index,一个是输入顺序上略有区别,另一个是对于输入的张量索引维度的要求。在PyTorch中,如果我们要实现类似于MindSpore中的gather功能,需要手动对输入索引的维度操作一下。
2025-06-18 15:06:00
311
原创 MindSpore中的ReduceMax和max操作的区别
本文介绍了在pytorch和mindspore中两种计算张量最大值的算子,如果直接使用max算子,两者的输出都是最大值元素和最大值索引。但是mindspore中额外的支持了ReduceMax算子,可以允许我们只输出最大值而不输出最大值索引。
2025-06-16 14:52:00
343
原创 PyTorch中的求余
本文通过几个示例,介绍了在Python、Numpy和PyTorch三个不同的框架下,对于求余数函数的定义。比较特殊的是pytorch中的fmod函数,并不符合数学上的求余数方法,而是需要使用remainder函数。
2025-06-11 15:50:00
329
原创 Python中的cls变量
本文介绍了在Python的classmethod装饰的类方法的cls变量的意义,通过几个不同的示例对比,凸显cls变量在Python编程中的应用场景。对于大多数的场景来说,使用普通的Python类和函数定义即可。如果需要在类的外部使用类的内部函数,但是可能有多个不同初始化的类输入,那么可以使用staticmethod进行装饰。如果只有一个类,而有多种不同的输入场景下,可以使用classmethod进行装饰。
2025-06-03 17:50:00
743
原创 QUBO建模
这篇文章算是对Fred Glover的一篇综述的解读,添加了一些方便直观理解的示例具体的建模过程。对于不同的场景,可以使用不同的惩罚项进行QUBO建模,从而可以使用求解器或者Ising机进行求解。
2025-04-22 15:17:00
929
原创 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
919
原创 Ollama+DeepSeek+SlackBot
技术背景想必最近有在部署DeepSeek大模型的人,看标题就知道这篇文章在做什么事情了。由于Ollama对于IP的监听缺乏安全防护,并且内网部署的Ollama模型对于外网来说也是不可见的,而如果使用一些公网API,又存在隐私数据泄露的风险。这里提供一个方案:使用端到端加密的通讯软件,将消息内容转为token传输给Ollama本地部署的模型,然后接收token作为消息,通过加密通讯返回给用户。但...
2025-03-10 10:33:00
980
原创 Cython与CUDA之Add
技术背景在前一篇文章中,我们介绍过使用Cython结合CUDA实现了一个Gather算子以及一个BatchGather算子。这里我们继续使用这一套方案,实现一个简单的求和函数,通过CUDA来计算数组求和。由于数组求和对于不同的维度来说都是元素对元素进行求和,因此高维数组跟低维数组没有差别,这里我们全都当做是一维的数组输入来处理,不做Batch处理。头文件首先我们需要一个CUDA头文件cud...
2025-03-05 09:59:00
718
原创 Cython与CUDA之BatchGather
技术背景在前面一篇文章中,我们介绍过Cython+CUDA框架下实现一个简单的Gather算子的方法。这里演示Gather算子的升级版本实现——BatchGather算子。不过这里只是加了一个Batch维度,并没有添加其他的维度,例如Dimension维度,在这里暂不考虑。CUDA头文件这里我们保留了原本的Gather部分,只添加一个BatchGather的运算,以下为cuda_index...
2025-03-03 15:54:00
954
原创 DeepSeek满血版测试
技术背景很多厂商以次充好,用蒸馏版DeepSeek冒充满血版。本文提供一些收集的问题集,可以用于测试是否满血DeepSeek。经过实际测试,国内厂商中只有满血版DeepSeek可以全对。但是各厂商后续有可能经过联网更新,所以本集合有一定的时效性。问题一在平面四边形ABCD中,\(AB = AC = CD = 1\), \(\angle ADC = 30^{\circ}\), \(\angl...
2025-02-28 16:34:00
1100
原创 CUDA时长统计
技术背景前面的一篇文章中介绍了在CUDA中使用宏来监测CUDA C函数或者Kernel函数的运行报错问题。同样的思路,我们可用写一个用于统计函数运行时长的宏,这样不需要使用额外的工具来对函数体的性能进行测试。文件准备因为这里的宏改动,主要涉及CUDA头文件和CUDA文件的修改,所以Cython文件和Python文件还有异常捕获宏我们还是复用这篇文章里面用到的。测试内容是,定义一个原始数组和...
2025-02-28 09:45:00
438
原创 Cython与CUDA之Gather
技术背景Cython是Python的一个超集,可以使用Pythonic的语法写出接近于C语言的性能,可以用于将Python编程过程中遇到的Bottleneck模块改写成Cython以达到加速的效果。前面写过一些关于Cython加速计算的文章。又因为Cython编译过程中会先转为C语言代码,然后再编译为动态链接库或者可执行文件,所以很自然的可以在Cython中调用C语言函数。用这种方法,还可以直...
2025-02-27 10:20:00
766
原创 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
524
原创 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
633
原创 DeepSeek本地性能调优
技术背景大模型性能调优是一个很复杂的工程,涉及到很多细节,如果真要对模型动刀子,还需要对模型和数据集本身有非常好的理解。这里我们仅仅考虑模型加载过程中,可以优化的一些参数配置。关于DeepSeek在本地的部署,以及PageAssist插件的使用,可以参考DeepSeek合集。调优思路一句话总结一下调优思路,如果你已经尝试过了,那么可以略过本文:GPU内存 > 多GPU内存 >...
2025-02-21 10:53:00
1694
原创 Ollama模型迁移
技术背景在前面的一些文章中,我们介绍过使用Ollama在Linux平台加载DeepSeek蒸馏模型,使用Ollama在Windows平台部署DeepSeek本地模型。除了使用Ollama与模型文件交互,还可以使用llama.cpp和KTransformer这样的。也有一些ChatBox、AnythingLLM和PageAssist这样的客户端工具推荐。这里我们考虑到这样的一个使用场景,在我们...
2025-02-20 16:34:00
1235
原创 DeepSeek智能编程
技术背景DeepSeek开源之后,让大家意识到了即时是在自己硬件性能一般的本地环境,也能够部署和使用大语言模型,真正实现了大模型的“私有化”。而私有化大模型之后,自然是考虑生产力的私有化。例如,如何使用大模型作为一个工具来进行编程?本文将要介绍两种不同的人工智能编程方法。Cursor的安装与使用第一种方法,是使用Cursor来进行编程,是一个跟VSCode很像的IDE,优点是支持了很多模型...
2025-02-19 17:45:00
1142
原创 大模型工具KTransformer的安装
技术背景前面写过几篇关于DeepSeek的文章,里面包含了通过Ollama来加载模型,以及通过llama.cpp来量化模型(实际上Llama.cpp也可以用来加载模型,功能类似于Ollama)。这里再介绍一个国产的高性能大模型加载工具:KTransformer。但是本文仅介绍KTransformer的安装方法,由于本地的GPU太老,导致无法正常的运行KTransformer,但是编译安装的过程...
2025-02-19 10:28:00
1195
原创 DeepSeek模型量化
技术背景大语言模型(Large Language Model,LLM),可以通过量化(Quantization)操作来节约内存/显存的使用,并且降低了通讯开销,进而达到加速模型推理的效果。常见的就是把Float16的浮点数,转换成低精度的整数,例如Int4整数。最极限的情况下,可以把参数转化成二值Bool变量,也就是只有0和1,但是这种大幅度的量化有可能导致模型的推理效果不佳。常用的是,在70...
2025-02-17 14:11:00
1479
原创 DeepSeek+PageAssist实现本地大模型联网
技术背景在前面的几篇博客中,我们分别介绍过在Ubuntu上部署DeepSeek、在Windows上部署DeepSeek、使用AnythingLLM构建本地知识库的方法,其中还包含了ChatBox的基本安装和使用。这里我们要介绍的是PageAssist,一个包含了大模型Chat、网络检索和知识库搭建的浏览器插件,不依赖于操作系统,而且功能配置非常丰富,可玩性很高,推荐使用。安装PageAssi...
2025-02-14 17:02:00
1552
原创 DeepSeek+Zotero
技术背景在DeepSeek系列文章中,我们已经分别介绍过关于DeepSeek在Ubuntu Linux平台和Windows平台上的本地部署方案,以及Ollama、ChatBox和AnythingLLM等辅助工具的使用。即使不使用DeepSeek-R1的全量模型,在DeepSeek的本地部署的蒸馏模型,结合AnythingLLM已经可以构建本地化的知识库。但是如果在科研过程中要专注于使用PDFC...
2025-02-11 14:19:00
1103
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅