- 博客(161)
- 收藏
- 关注
原创 【大模型换机器部署失败原因排查】一次 `Illegal instruction` 排查:原来是虚拟机没暴露 AVX 指令集
文章摘要:本文记录了一个由虚拟机CPU指令集缺失导致的Python服务崩溃问题。作者在部署服务时遇到"非法指令"错误,经排查发现是Polars库需要AVX等指令集支持,而虚拟机因迁移被降级为QEMU通用CPU模式,隐藏了这些指令集。文章详细介绍了通过/proc/cpuinfo检查CPU指令集、识别虚拟化环境的方法,并提供了修改虚拟机配置透传宿主机CPU指令集的解决方案。最后总结了排查类似"非法指令"错误的步骤:检查CPU指令集、确认虚拟化环境、考虑迁移影响。
2026-05-08 10:03:46
109
原创 HuggingFace环境兼容性踩坑(Mac 用户必看)
本文针对PyTorch与NumPy版本兼容性问题提供解决方案。当出现NumPy 2与旧版torch不兼容警告时,需根据不同硬件采取不同措施:Apple Silicon用户可直接升级torch至2.4+;Intel Mac用户需降级numpy和transformers版本;Linux/服务器用户可直接安装最新版本。同时指出transformers≥4.46要求torch≥2.4的连带问题,验证环境的正确方法,并建议Intel Mac用户考虑迁移至Linux服务器进行机器学习开发。文中提供了详细的终端命令和版本
2026-05-06 16:17:02
226
原创 npm 不是“前端的包管理器“—它是 Node.js 的
摘要:本文澄清了npm与前端的关系,指出npm实际上是Node.js的包管理器,而非专属于前端。通过类比Python的pip,说明npm服务于所有基于Node.js的场景,包括后端服务、CLI工具、自动化脚本和桌面应用。前端工程化只是Node生态的一部分,npm在开发阶段被前端工具链使用,但运行阶段与npm无关。文章通过纯后端示例证明npm的通用性,强调npm服务于所有Node.js应用,而不仅限于前端开发。
2026-04-28 09:46:23
275
原创 【前端基础】npm install 是干嘛的(带参数 vs 不带参数)
npm命令差异解析:npm install与npm install <包名>本质是互补关系。前者根据package.json安装所有依赖,用于初始化或同步环境;后者则添加新依赖并自动更新清单文件。关键区别在于前者不修改清单,后者会写入新包信息。两者协同工作,共同维护node_modules目录。建议项目初始化时先执行无参数版本,再按需添加特定包。node_modules目录不应提交到git,每次环境变更后都应重新运行安装命令以确保依赖一致性。
2026-04-27 11:03:02
506
原创 【前端工具链小白篇】前端工具链全景:Node、npm、Vite 各管什么
这篇文章梳理了前端开发中Node.js、npm、Vite和项目之间的关系。文章指出浏览器只能识别HTML/CSS/JS,而现代开发使用TypeScript、JSX等需要Vite这样的打包工具进行编译转换。Vite运行在Node.js环境上,而npm作为Node自带的包管理器负责安装依赖和管理项目。整个流程从下到上是:Node.js提供运行环境→npm管理依赖→Vite编译代码→项目运行。文章用盖房子比喻这个关系:Node是地基,npm是管家,Vite是施工队。最后给出了从安装Node到启动项目的完整命令流程
2026-04-27 10:30:57
587
原创 【ChatGPT Image2 全景图实战】从提示词到电影级长镜头画面
本文探讨了如何利用ChatGPT的Image2功能生成具有叙事性的全景图像。作者发现,Image2的真正优势不在于绘制单幅画面,而在于构建视觉叙事。通过"全景图+长镜头"的思路,可以创造连续空间和时间流动的视觉表达。文章详细介绍了Prompt设计的结构化方法,包括镜头语言、叙事层次和风格控制,并提供了实用模板和工作流程。通过案例展示了如何将人生历程转化为连贯的视觉叙事,同时指出了常见错误模式。最终强调,通过结构思维和电影语言,可以生成富有时间、空间和情感深度的视觉作品。
2026-04-26 00:10:16
1035
原创 卷积层输出尺寸是怎么来的?从公式到直觉理解(含 224×224 示例)
本文深入浅出地解释了卷积神经网络中特征图尺寸变化的计算逻辑。通过分析卷积核滑动机制,揭示了输出尺寸公式的本质:合法滑动位置的数量。文章首先用一维示例直观展示卷积核滑动过程,随后拆解公式的三个关键部分(有效范围、步长、位置转换),并扩展到二维图像场景。特别强调了padding保持尺寸的原理和stride控制采样密度的作用,最后总结了常见参数组合的效果。全文以"滑动窗口"为核心视角,将复杂的卷积运算简化为位置计数问题,帮助读者建立清晰的直觉理解。
2026-04-23 11:22:42
667
原创 【权重】离线环境怎么用预训练权重
在生产环境中,模型加载常因网络隔离面临挑战。本文提供离线加载预训练权重的解决方案:1) 在有网环境触发自动下载并缓存权重文件;2) 定位缓存路径(~/.cache/torch/hub/checkpoints/);3) 将权重文件传输至目标机器后,使用weights=None初始化模型结构,再手动加载state_dict。该方法同样适用于HuggingFace等框架,是离线部署的通用实践。
2026-04-22 17:27:14
81
原创 【 梯度累加】同一个张量走两条路,`.grad`怎么合并
本文通过分析ResNet中的残差连接,揭示了PyTorch处理多路径梯度的核心机制。关键点在于: 数学上,多元链式法则要求多路径梯度必须相加,这是ResNet梯度回传的基础; PyTorch通过累加机制(.grad +=)自动实现这一规则; 梯度累加的特性解释了为什么需要optimizer.zero_grad(); 该特性可被正向利用实现梯度累积训练,但需注意损失归一化。 理解这一机制对掌握深度学习框架的底层原理至关重要。
2026-04-21 16:42:58
500
原创 【文件一致性检验】为什么模型文件一定要做 SHA-256 校验?从 Python 实现到工程落地
机器学习工程中,模型文件校验常被忽视却至关重要。本文指出模型文件可能因下载不完整、存储损坏或版本错乱而"静默失效",导致模型看似正常但结果偏差。相比不可靠的文件大小比对和已不安全的MD5,SHA-256作为工业标准可提供确定性验证。文章详细介绍了流式SHA-256校验的Python实现原理,强调其在模型发布、下载校验和CI/CD中的必要性——将"文件正确性"从经验判断转化为可验证的技术方案,避免模型"正常运行却错误工作"的风险。SHA-256校验是
2026-04-21 11:52:19
380
原创 给 Claude Code 换个引擎:从 Anthropic 到 GLM 的接入实战
文章摘要:Claude Code 支持通过环境变量切换底层引擎,可替代 Anthropic API 为国产模型如 GLM-4.7/5.1。配置方法有两种:临时通过 export 设置环境变量,或持久化写入 settings.json 文件。需准备 GLM API Key 并订阅 Coding Plan 套餐,设置 ANTHROPIC_BASE_URL 和 ANTHROPIC_AUTH_TOKEN 即可切换。文章详细介绍了配置步骤、注意事项及常见问题排查,方便用户在预算控制、网络稳定性和模型对比等场景下灵活选
2026-04-20 15:24:53
704
原创 【Claude Code原理】 Tool Loop 机制:一个严格遵守协议的客户端
本文解析了Claude Code与AI模型的交互机制,揭示了其作为严格遵循Anthropic Messages API协议的客户端本质。文章从三个方面展开:首先说明Claude Code通过环境变量配置API端点,以标准格式发送请求并解析流式响应;其次详细介绍了工具调用(tool use)的工作流程,强调模型仅生成结构化意图,由Claude Code实际执行并反馈结果;最后阐释了任务执行是通过多轮"tool_use→执行→tool_result"循环完成的机制。文章还简要提及了国产模型通
2026-04-20 14:34:42
435
原创 Kubernetes 核心三层关系:Namespace / Deployment / Pod(k9s 实战视角)
Kubernetes中Namespace、Deployment和Pod是分层协作的关系:Namespace提供环境隔离(如dev/test/prod),Deployment作为应用控制器管理Pod的生命周期和版本更新,而Pod是实际运行的容器实例。在k9s中,先通过:ns选择环境,再用:deploy查看应用状态,最后通过:pod排查具体问题。常见误区包括将Namespace当作操作页面、直接操作Pod而非通过Deployment管理,以及混淆rollout restart与Pod重启(实际是触发Deploy
2026-04-17 11:02:44
455
原创 【GPU 基础】架构与内存设计
GPU性能优化关键在于理解其架构特点:GPU由数千个并行核心组成,擅长处理矩阵运算等重复任务。其内存系统分为寄存器、共享内存、L2缓存和显存四个层级,访问速度差异达10-20倍。基本计算单元SM(流式多处理器)包含多个CUDA核心和共享内存,不同SM间需通过显存通信。由于内存读写速度远低于计算速度,优化内存访问(如算子融合和内存规划)比提升算力更能改善性能。这种架构使GPU特别适合深度学习中的大规模并行计算任务。
2026-04-16 09:25:34
410
原创 【运行计时】为什么计时不要再用 `time.time()` 了
Python中的time.time()和time.perf_counter()各有不同用途:前者获取当前时间戳,适用于日志记录和时间判断;后者提供高精度计时,更适合性能测试和耗时统计。关键区别在于time.perf_counter()不受系统时间修改影响、精度更高且单调递增,特别适合算法性能测试、接口耗时监控等场景。在工程实践中,记录时间戳用time.time(),测量代码执行时间应优先使用time.perf_counter()。
2026-04-15 10:22:53
442
原创 【服务出错问题排查记录】从一个“点击失败”开始:为什么“系统异常”其实是最差的错误设计
摘要 本文记录了一次系统故障排查过程。当页面仅显示"系统异常"时,作者通过浏览器开发者工具定位到后端接口,发现返回500错误但缺乏具体信息。通过curl验证确认问题在后端,但系统错误设计导致无法获取异常详情。文章指出,合理的错误响应应包含接口路径、错误类型、trace_id等关键信息,以便快速定位问题。此次排查揭示了排障应从请求链路开始,而非仅依赖表面现象,凸显了系统可观测性的重要性。
2026-04-12 23:17:21
543
原创 【理论分析】信息熵的极值问题:什么时候最小?什么时候最大?
信息熵极值分析:完全确定与均匀分布的不确定性 信息熵公式 $H(X) = - \sum p(x_i) \log_2 p(x_i)$ 有两个关键极值: 最小值0出现在one-hot分布(某事件概率为1),此时系统完全确定; **最大值$\log_2 n$**出现在均匀分布(各事件概率相等),此时系统最难预测。通过函数分析和拉格朗日法可严格证明该结论。熵本质衡量系统整体不确定性:分布越集中熵越小,越均匀熵越大。需注意熵反映的是分布结构而非单个概率值,避免"概率小则熵小"的常见误区。
2026-04-12 22:50:30
554
原创 【模型序列化】pkl 的问题与格式选型
摘要: 模型序列化是部署的关键环节,但传统pkl格式存在版本依赖、安全风险和跨框架不兼容等问题。序列化方案演进分为三代:框架原生格式(如pkl、PyTorch的pt)简单但局限性大;计算图格式(如TorchScript、TensorFlow的SavedModel)解决了版本绑定,仍限于框架生态;ONNX作为跨框架标准,实现了训练与推理的解耦,兼顾版本、框架和硬件兼容性。生产部署应避免pkl,优先选择ONNX等开放格式以确保灵活性和性能优化。
2026-04-10 14:28:10
371
原创 【CLAUDE 防封小工具】从“能调用”到“稳定调用”:为 Claude CLI构建一层防封保护
你可能已经遇到过这样的情况:本地用 VPN 调 Claude,一开始好好的跑一段时间,突然开始报错很多人第一反应是:“是不是用错了?”但实际上,大多数情况下问题不在代码,而在。
2026-04-10 11:47:59
513
原创 【LLM实战之舆情监测与分析】01_舆情监测是什么
公众对某件事的看法和情绪,通过各种渠道表达出来的总和。 你和朋友在微信群里吐槽某款 APP 更新后变难用了,这是舆情。几千个网友在微博下面骂某家餐厅的服务,这是舆情。一个话题在知乎被反复讨论、立场逐渐分化,这还是舆情。 把它想象成社会的"体温",每时每刻都在波动,有时平稳,有时骤然升高。 从隔天才能读到的报纸,到 30 分钟内转发十万次的微博,信息的传播速度已经超过了人类自然感知的速度。 在互联网出现之前,一篇报纸文章要等第二天早晨才能被读者看到,一个流言从村头传到村尾可能需要几天。
2026-04-09 17:39:09
357
原创 【激活函数】Sigmoid 与 Softmax 的关系:从二分类到多分类的统一视角
Sigmoid和Softmax函数在分类问题中分别用于二分类和多分类任务。本文揭示了它们之间的本质关系:Sigmoid实际上是Softmax在二分类情况下的数学特例。通过推导证明,当类别数K=2时,Softmax可化简为Sigmoid形式,且两者在数学上完全等价。这种等价性源于二分类问题只需关注两个类别的相对差值,因此可以简化为单一输出神经元结构。这一发现统一了二分类与多分类的理论框架,说明它们本质上是同一问题的不同维度表达。
2026-04-09 16:40:32
609
原创 【激活函数】01——小白直觉篇
激活函数是神经网络从"线性计算器"升级为"万能函数拟合器"的关键开关。 没有它,不管堆多少层,网络都等价于单层线性模型。本文从零基础出发,用直觉讲清三件事:为什么需要激活函数(引入非线性)、它在做什么(控制神经元信号的传递)、三代演进的故事(Sigmoid → ReLU → GELU/SwiGLU)。最后给出一张选型决策图:默认ReLU,LLM 用 SwiGLU,BERT 类用 GELU。
2026-04-08 16:13:33
270
原创 【Finetune学习】02:训练到底在干什么?
让模型的输出尽可能接近标准答案。损失函数(Loss Function)就是衡量"差多远"的指标。 对于语言模型的 Finetune,最常用的损失函数是交叉熵损失L−1T∑t1TlogPθwt∣w1w2wt−1L−T1t1∑TlogPθwt∣w1w2wt−1 简单来说,就是模型在每个位置预测下一个 token 的概率,我们希望正确 token 的概率越高越好。
2026-04-08 10:04:41
347
原创 【Finetune学习】01:为什么你的大模型需要“再学习“?
摘要 本文深入解析了Finetune(微调)技术的核心概念与应用场景。通过实习生类比,对比了Prompt Engineering、RAG和Finetune三种方案的差异:Finetune通过改变模型参数实现稳定效果提升,适合品牌风格迁移、专业术语纠正等场景。文章详细阐述了Finetune原理(基于预训练模型的参数调整)和完整工作流,并指出参数高效微调(如LoRA)已成为主流方案。最后强调Finetune是系统工程,需要数据-训练-评估的多次迭代,建议优先尝试Prompt和RAG,效果不足时再考虑Finetu
2026-04-07 17:11:47
573
原创 【Git基础】03——Git 撤销与回退:改错了怎么办
Git撤销操作指南:根据改动层级选择对应工具。工作区未add时用git restore丢弃修改;已add未commit时用git restore --staged撤销暂存;未推送的commit可用git reset回退(分--soft/--mixed/--hard三种模式);已推送的commit必须用git revert生成反向commit。紧急切换分支时可用git stash临时保存现场。核心原则:未共享的历史可改写,已共享的只能追加修正。
2026-04-07 15:42:49
595
原创 【Git基础】02——分支:在不破坏主线的情况下做实验
本文介绍了Git分支的基本概念和操作。分支是独立的提交时间线,允许在不影响主分支的情况下进行开发。主要内容包括:1)创建和切换分支的命令;2)分支合并及冲突解决方法;3)推送分支到远程仓库;4)独立项目和团队协作的分支策略。关键点在于理解分支是指针而非代码副本,切换分支即切换项目快照,合并是历史合流,冲突需要人工决策。Git分支机制为开发提供了安全的试错环境,是软件开发的重要工具。
2026-04-07 14:58:33
341
原创 【Git 内部原理】`.git` 是怎么记住所有版本的
Git高效存储版本历史的秘密在于其独特的对象存储机制。它通过三种核心对象(blob、tree、commit)构建版本历史,并采用以下优化策略: 快照存储:每次提交记录完整项目状态,而非差异 内容去重:相同文件内容只存储一次 引用指针:分支和标签仅存储commit哈希值 智能压缩:自动压缩对象并打包相似文件 这种设计使得: 分支创建只需新增指针文件 历史版本可精确还原 项目规模增长不影响性能 通过分析.git目录结构可见,Git将版本数据集中存储在objects目录中,配合refs和HEAD指针实现高效版本管
2026-04-07 14:32:23
442
原创 从服务器拷文件到本地:scp 与 rsync 实战
本文介绍了三种从服务器拷贝文件到本地的方法:scp直接拷贝、先压缩再传输、以及rsync增量同步。scp适合少量文件传输,简单易用;压缩后传输(使用tar)适合处理大量小文件,提升效率;rsync则适用于需要长期同步的大目录,仅传输变化部分。文章详细说明了每种方法的命令格式、注意事项和适用场景,并提供了实用技巧如排除文件、预览传输等。根据文件数量和同步频率,用户可选择最适合的方案:偶尔拷贝用scp,文件多先压缩,长期同步用rsync。
2026-04-07 13:10:19
626
原创 【Git 报错处理】`remote origin already exists` 是什么意思?
Git提示"remote origin already exists"是因为默认clone操作已自动创建origin远程仓库。遇到该报错时,应先通过git remote -v查看现有配置。解决方法包括:1)直接修改地址git remote set-url origin 新地址(推荐);2)删除后重建;3)添加第二个远程仓库时使用不同名称。理解remote本质是"名称→地址"的映射关系后,这类问题就能轻松处理。
2026-04-07 09:56:24
258
原创 【Git 基础】01——代码是怎么被追踪的
Git是一个分布式版本控制系统,主要用于追踪文件变化历史和管理多人协作开发。核心概念包括仓库(repository)、提交(commit)和分支(branch)。基本工作流程为:初始化仓库(git init)→查看状态(git status)→暂存修改(git add)→提交(git commit)→推送至远程仓库(git push)。关键命令还包括git log查看历史记录和git pull同步最新代码。通过.gitignore文件可排除不需要版本控制的文件。Git通过保存文件快照和分支管理,有效解决了代
2026-04-06 23:55:20
478
原创 【CI/CD】02_一次 git push 后发生了什么?CI 是怎么工作的
本文揭示了CI/CD的本质不是工具而是一条自动化流水线,它取代了人工部署的每一步操作,确保流程一致且可追溯。文章详细解析了持续集成(CI)的工作机制:通过拉取代码、安装依赖、运行测试等步骤验证代码合并的安全性,消除"在我电脑上是好的"这类环境差异问题。CI的核心优势在于标准化执行环境,而持续交付/部署(CD)则决定代码上线的最终方式。全文阐明了一次git push如何触发自动化部署流程,并强调CI/CD能有效规避人为错误和环境不一致的风险。
2026-04-02 22:56:57
413
原创 【CI/CD】01_为什么手动部署是个危险游戏
手动部署存在诸多风险,每一步操作都可能引发线上事故。本文剖析了传统部署流程:从代码拉取、依赖安装、项目构建到服务重启,每个环节都依赖人工操作且不可逆。部署本质是系统状态的切换,而非简单的代码上传。手动部署的问题在于流程不可重复、状态难验证、问题难追溯。CI/CD的核心价值在于将部署标准化、自动化,从解决单次上线问题转变为保障未来所有发布的可靠性,从而有效控制风险。
2026-04-02 18:03:31
516
原创 PYTHONPATH 环境变量:什么时候用,怎么设,作用域有多大?
PYTHONPATH是往sys.path注入路径的外部手段,Python 启动时读取,插入到之后三种作用域:单条命令(最安全)、当前终端会话、永久写入配置文件(慎用)适合 CI、容器、一次性调试,不方便改代码或运行方式时,它是最轻量的选择不适合日常开发和正式项目,隐式依赖,容易产生跨项目污染和"在我电脑上能跑"的问题优先考虑python -m和,它们更显式、更可移植、更不容易出意外。
2026-04-01 09:20:29
448
原创 PyCharm 里 import 不报错,运行却失败?Sources Root 的锅
PyCharm的import问题源于编辑器与运行时使用两套独立路径系统。Sources Root是关键配置,需手动标记代码目录(如src/)以对齐两套系统。常见项目结构中,平铺式最简单,带子包或src/布局需额外设置。推荐正式项目使用pip install -e .安装为可编辑包,彻底解决路径问题。排查时优先检查sys.path是否包含目标目录。PyCharm开发时,Sources Root与运行配置的Working Directory需正确设置,避免编辑器无报错但运行失败的情况。
2026-03-31 23:33:37
192
原创 绝对 import 还是相对 import?一文讲清怎么选
本文介绍了Python中绝对导入和相对导入的区别与选择。绝对导入从根目录写完整路径,可读性好且不易出错;相对导入从当前文件位置出发,适合包内模块间的引用,但只能在包内使用且运行限制较多。建议优先使用绝对导入,仅在包内紧密耦合模块间使用相对导入。同时强调每个包目录都应添加__init__.py文件(即使是空文件),以避免潜在问题并支持相对导入。最后总结给出四点实用建议,帮助开发者正确选择导入方式。
2026-03-31 18:13:49
134
原创 Python Import 为什么报错?搞懂 sys.path 就明白了
摘要:本文解析Python模块导入机制的核心——sys.path。通过实例演示,说明不同运行方式(python xxx.py与python -m xxx)会导致sys.path[0]不同(脚本目录vs当前目录),从而影响模块查找。文章强调项目内模块应使用-m方式运行,并指出临时修改sys.path的弊端。掌握这一机制可解决80%的导入问题,关键要理解模块查找路径与实际目录结构的关系。
2026-03-31 18:04:22
311
原创 AI 编程助手中的两种“角色“:开发角色与业务角色
摘要:本文探讨了AI编程助手中的两种关键角色定义——开发角色和业务角色,及其对代码生成的影响。开发角色决定AI以何种技术身份(如后端工程师、前端工程师)编写代码,影响代码风格和技术决策;业务角色则定义应用中的用户类型及其权限,确保生成的代码包含适当的权限控制。通过明确区分这两种角色,可显著提升AI生成代码的质量和安全性。文章还提供了角色定义的具体写法建议,帮助开发者更好地引导AI编程助手输出符合预期的代码。
2026-03-31 15:16:02
745
原创 【Claude Code 学术指南】(二):搭建你的研究工作流
摘要: 本文介绍如何通过CLAUDE.md文件解决AI助手Claude Code的"记忆缺失"问题,构建高效的研究协作系统。CLAUDE.md作为项目规则手册(100-150行),记录关键决策、安全边界和项目状态,帮助Claude快速进入工作。文章提出四步工作流(定向→规划→执行→验证)和四种权限模式(Plan/Ask/Auto/YOLO),强调Plan-first原则确保研究可复现。推荐项目结构包含原始数据保护、日志记录和输出管理,形成完整的AI协作体系。核心是通过文档化记忆和结构化流
2026-03-31 11:29:18
501
原创 【Claude Code 学术指南】(一):为什么研究者需要 AI 助手
《Claude Code学术指南:AI助手如何提升研究效率》 摘要:本文介绍了AI研究助手Claude Code在学术工作中的应用价值。基于"锯齿边界"理论,AI擅长数据清洗、代码调试等低价值重复工作,而研究者可专注于核心学术思考。Claude Code作为终端AI代理,具备文件读写、代码执行和上下文记忆三大核心功能,能重组项目目录、转换论文格式、审查代码和编辑文稿。通过真实案例展示了其在课程材料更新中的效率优势,相比传统方式可节省大量时间。文章回应了学术伦理、技能退化和公平性三大质疑,
2026-03-31 10:56:58
379
原创 【Agents】自定义子代理进阶:后台执行
本文介绍了Claude Code多Agent系统中后台任务(background)的实现与应用。通过background: true配置,子代理可在后台异步执行,主对话无需等待即可继续交互。文章对比了前台(foreground)和后台模式的特点:前台适合需要实时监控的任务,后台适合"交出去等结果"的场景。详细说明了配置方法、使用场景判断标准,以及如何查看后台任务进度和结果。这种机制能显著提升工作效率,允许多个任务并行执行,适用于测试执行、文档生成等不急需结果的场景。
2026-03-31 10:12:15
696
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅