2026-03-17

03月17日

一、今日完成情况

  • 完成Windows的关闭休眠模式,实现随时可以连接登录
  • 完成作业,使用codex完成数据科学的作业,数据预处理
  • 解决git两个笔记软件同步的问题[[3、git 笔记冲突解决模板]],此模板解决了一种冲突的问题。
  • 尝试使用LLM 通义千问的模型,可是失败了,失败也是工作量
  • 实验室服务器配置安装zellij和 ssh MacBook无密码登录
  • vscode配置基本的json使用文件,尝试ssh登录失败,寻找解决方案。
  • 操作系统,手撕代码.c文件,结合理论实践,这一个学习千万不要浅尝辄止,操作系统我是一定需要学习的,接下来需要系统性的学习,做实验。

二、今日感悟

  • 核心业务数据​:
    • 非常零散,总结一下这几点,操作系统代码手撕,大模型部署使用,服务器远程连接和基本配置。
  • ​今日工作总结:​
    • 我本科的时候没有好好学习操作系统,关于其实验和代码也是浅尝辄止,主要还是理论为主,我就觉得很没意思,非常枯燥,现在我总算可以控制自己的节奏了,千万不要半途而废了,而且这个是工作时候的必考点。
    • 早上看到了一个计算机经验远超我想想的自媒体人,我看上去觉得有些夸张了,主要是他才大三,怎么能够做这么多事情,无人机算法、n8n,dify,Java ,缓存,C++,数据库,个人博客,csdn维护,小红书…… 如果他真的是大三,不是起号的话,那么我会比较佩服他,这意味着他从大一开始就目标明确的探索计算机方向了,并且一开始就养成记笔记,复盘,调试代码的能力,我不得不怀疑他爸妈或者哥哥姐姐是互联网方向的,当然一切结论的基础就是,他真的是大三,不是程序员套了个壳,起号。
    • 我现在真的是工作方面的基础设施,也就是硬件拉满了。
      • 远程控制两个系统,想要什么时候访问,就什么时候访问,什么时候切换,就什么时候切换。
      • git想要同步就可以随时实现,电纸书,想要获取什么书籍信息,就获取什么,不用怕眼睛干涩,可以切换着媒体获取信息。
      • MacBook非常轻薄,想要什么时候办公,就什么时候办公,掀起盖子就工作,合上盖子就换地方。
      • 扩展屏幕方便我的工作,MacBook快捷键和各种软件提醒我学习、休息,实现智能化。
      • codex,AI 辅助我的决策和信息获取。实验室显卡供我使用,现成的资源不是普通人可以享受的。
      • 科技感的安卓手机,实现文件的自由上传,网盘的实时同步,还有插件帮我跳过广告弹窗,节约我的时间,小单车扫码即走,打车手指动动就完成下单。足不出户,尽知天下事。
      • 我处在一个智能科技的时代,加上个人的操作系统,我的学习变得越来越有意思,我的无穷无尽的求知欲,正在越来越得到满足。
  • ​明日工作计划:
  • ​今日学习成长:​
    • 效率越来越高了,自从学会使用zellij和nvim之后,在代码便捷方面还是非常有效果的,未来熟练了完全可以做到习惯于手撕代码。

三、备注

  • 预定–完成GLM和KiMi模型 opencode相关CLI的测试,查看其效果/codex openai 产品business尝试,对比效果。 截止日期:无

  • 预定–华尔街AI发展推演没有系统化了解,导出为图谱的形式,导出笔记,进行理解。 截止日期:3月20日 预计时间:1h

  • 预定–老大的论文阅读还是没有完成,这里需要花点时间梳理其算法逻辑。 截止日期:3月22日 预计时间:~~

  • 预定–服务器上面部署AI的接口,然后就是大语言模型的部署,这个可以了解一下,查看是否麻烦。 截止日期:3月20日

  • 已完成–数据科学数据预处理,完成两部分,实验和实验报告纸质版 截止日期:3月22日 预计时间:20min

  • 正在完成–vscode remote ssh 实验室服务登录、vscode github账户配置一步到位 预计时间:30min

  • 预定–完成网络过技术前沿的课程报告,主要是关于论文的撰写,需要按照学术期刊模板撰写报告。 截止日期:6月1日

  • 已完成–实验室开会,费老师要求 廖师兄那边对接新项目,并且跑通基本代码,需要熟悉那个最基本的项目。 截止日期:两周 预计时间:20min跑通

  • 已完成–实验室服务器,部署阿里大模型,打通大语言模型的配置流程,未来使用的时候可以熟悉一点。今天开会,感觉费老师对于我的定位,是廖紫江的继任,生态位的意思吧。 截止日期:一周

四、大模型测试

替换为你的模型实际路径

python -m vllm.entrypoints.openai.api_server \
    --model /root/models/Qwen3-30B-A3B-Instruct-2507 \
    --served-model-name qwen3 \
    --max-model-len 8192 \
    --trust-remote-code \
    --tensor-parallel-size 1  # 如果你有多个 GPU,可以增加这个数值

启动服务后,vLLM 会自动加载模型并监听本地端口(默认 http://localhost:8000)。此时可以通过标准的 OpenAI API 客户端进行调用,无需修改现有代码逻辑,极大地方便了迁移和集成。

调用示例

使用 curl 快速测试推理是否正常:

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3",
    "messages": [{"role": "user", "content": "你好,请介绍一下你自己。"}],
    "max_tokens": 100
  }'

如果返回包含模型生成文本的 JSON 响应,说明服务已成功运行。

遇到的问题与解决过程

A、通讯问题

在实际部署过程中,并非一帆风顺。我最初尝试启用多卡并行(--tensor-parallel-size 2),但服务启动时报出 NCCL 通信错误NCCL error: unhandled system error)。经过排查,发现是容器环境中 GPU 之间的 P2P(Peer-to-Peer)访问被禁用,导致 NCCL 无法建立高效的跨卡通信通道。

临时解决方案是设置环境变量强制 NCCL 回退到更兼容的通信模式:

export NCCL_P2P_DISABLE=1
export NCCL_SHM_DISABLE=1

虽然这会略微降低多卡吞吐性能,但在资源受限或权限受限的服务器环境中,能确保服务稳定启动。

此外,由于 Qwen3 系列模型使用了自定义模块(如特殊的 rotary embedding 实现),必须加上 --trust-remote-code 参数,否则会因无法加载 tokenizer 或模型结构而失败。这一点在 Hugging Face 模型库中很常见,但也容易被忽略。

B、json文件错误

Hugging Face 官方仓库里 config.json 是模型启动的“灵魂文件”,如果没有它,任何推理框架(vLLM, Transformers 等)都无法知道模型的架构、隐藏层维度或注意力头数。

Qwen3-30B 这种级别的模型,如果缺少这个文件,通常是因为在下载过程中出现了 中断,或者使用了 git clone 但没有正确处理 LFS(Large File Storage) 导致小文件没被同步下来。

config

反正尝试把这个文件加入到这个路径当中:

Pasted image 20260318003009

最近实验报错

vllm serve .     --tensor-parallel-size 2     --max-model-len 4096     --gpu-memory-utilization 0.6     --dtype float16     --enforce-eager     --trust-remote-code     --served-model-name qwen3

目前卡在这里了:

(Worker pid=21651) INFO 03-17 22:08:53 [pynccl.py:111] vLLM is using nccl==2.27.5
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800] WorkerProc failed to start.
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800] Traceback (most recent call last):
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800]   File "/root/miniconda3/lib/python3.13/site-packages/vllm/v1/executor/multiproc_executor.py", line 771, in worker_main
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800]     worker = WorkerProc(*args, **kwargs)
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800]   File "/root/miniconda3/lib/python3.13/site-packages/vllm/tracing/otel.py", line 178, in sync_wrapper
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800]     return func(*args, **kwargs)
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800]   File "/root/miniconda3/lib/python3.13/site-packages/vllm/v1/executor/multiproc_executor.py", line 592, in __init__
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800]     self.worker.init_device()
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800]     ~~~~~~~~~~~~~~~~~~~~~~~^^
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800]   File "/root/miniconda3/lib/python3.13/site-packages/vllm/v1/worker/worker_base.py", line 326, in init_device
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800]     self.worker.init_device()  # type: ignore
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800]     ~~~~~~~~~~~~~~~~~~~~~~~^^
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800]   File "/root/miniconda3/lib/python3.13/site-packages/vllm/tracing/otel.py", line 178, in sync_wrapper
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800]     return func(*args, **kwargs)
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800]   File "/root/miniconda3/lib/python3.13/site-packages/vllm/v1/worker/gpu_worker.py", line 265, in init_device
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800]     init_worker_distributed_environment(
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800]     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800]         self.vllm_config,
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800]         ^^^^^^^^^^^^^^^^^
(Worker pid=21651) ERROR 03-17 22:08:53 [multiproc_executor.py:800]     ...<3 lines>...

(APIServer pid=21312)   File "/root/miniconda3/lib/python3.13/site-packages/vllm/v1/engine/utils.py", line 1010, in wait_for_engine_startup
(APIServer pid=21312)     raise RuntimeError(
(APIServer pid=21312)     ...<3 lines>...
(APIServer pid=21312)     )
(APIServer pid=21312) RuntimeError: Engine core initialization failed. See root cause above. Failed core proc(s): {}

💡 小结:模型能跑起来只是第一步,真正考验工程能力的是在复杂环境(如容器、多卡、私有网络)下实现稳定、高效、可复现的部署。每一次报错都是对系统理解的加深——从 CUDA 驱动到 NCCL 通信,从模型结构到 API 兼容性,环环相扣,缺一不可。


到目前为止我还是没有跑通,运行还是报错的阶段,明天继续解决。

五、金瓶梅阅读–今日思考

3.1 权力博弈中的“非对称反击”:以李瓶儿为例

  • 核心痛点: 面对潘金莲“指桑骂槐”式的噪音挑衅,处于优势地位(有钱、有子、有宠)的个体如何应对?
  • 思考逻辑: * 人设维护: 避免降维打击。一旦陷入对骂,便失去了“淑女”的阶级优势。
    • 借力合规: 将个人私怨转化为“集团核心资产(官哥儿)”受损问题,通过大娘吴月娘进行合规化维权。
    • 以退为进: 利用西门庆的怜悯心建立心理护城河,将“无害”转化为一种高阶的竞争武器。

3.2 审美与身份的“降噪”:王六儿的生存美学

  • 人物扫描: 相比于潘金莲的浓艳夺目,王六儿倾向于“中人打扮”。
  • 细节解码: * 服饰: 紫、黑、白三色叠穿,呈现出一种低调但极具诱惑力的“人妻感”。
    • 人设: 她通过“素中带俏”的视觉形象,精准锚定了西门庆对于“贤惠情人”的心理需求,避免了与正室及宠妾的正面审美冲突。

3.3 帮闲阶层的“职场生态位”分析

  • 社交天才(应伯爵): 靠提供极高的情绪价值身份认同感,成为西门庆不可替代的“心理按摩师”。
  • 笨拙附和者(祝实念): 缺乏边界感,由于“没眼力见”和“功能性弱”,在核心圈层中处于尴尬的边缘位置。
  • 普通人的生存策略: * 若无社交天赋,应从“拼灵性”转向“拼确定性”。
    • 功能组化:贲四(工程部经理)一样,通过极高的交付率和守口如瓶的职业操守,成为系统的“硬核工具人”。
    • 内核化:傅伙计(首席运营官)一样,守住核心现金流业务,通过“极度稳定”对抗老板(西门庆)投机行为带来的系统风险。

今日结语: 《金瓶梅》不仅是一部文学巨著,更是一部残酷的“古代职场生存样本”。不管是处于顶层的妻妾,还是末端的帮闲,每个人的命运都写在他们的社交边界感价值交付力之中。

六、vscode ssh服务器远程登录–问题

报错内容:unable to watch for file changes. please follow the instructions link to resolve this issue。

解决思路:

Solution 1: Increase System File Watch Limit (Linux)

Check the current limit by running the following command in your terminal:

cat /proc/sys/fs/inotify/max_user_watches

Increase the limit by editing the sysctl.conf file. Open the file with a text editor using sudo, for example:

sudo vim /etc/sysctl.conf

Add this line to the end of the file:

fs.inotify.max_user_watches=524288

This value (524,288) is a common maximum that should be sufficient for most projects.

Load the new value by running the command:

sudo sysctl -p

Verify the change by running the check command again:

cat /proc/sys/fs/inotify/max_user_watches

我尝试过了,这个修改没有作用,原因就是我是容器用户权限不够,因此无法修改。

Solution 2: Exclude Unnecessary Folders in Your Application

修改vscode的排除文件夹,因为排除的种类的文件夹越多,服务器这方面的压力就越小,越可以满足要求,可是我基本上按照AI说法,把所有能够排除在外的文件夹都加入了,依然无法连接。

Visual Studio Code: Open Settings (File > Preferences > Settings or Code > Settings), search for files.watcherExclude, and add the relevant directories to the exclusion list. The default settings usually already exclude node_modules and some .git folders.

七、实验室代码跑通

1、背景

费老师的要求是我和廖师兄对接,快速上手他的代码,并且读懂代码的原理,于是我昨天和廖师兄对接了代码的运行,过程有些小插曲,不过无妨,我发现代码只有一个文件,看来任务量也不多。

2、完成

我需要打通的环节,就是服务器数据库的读取,读取数据之后,就是代码Deepseek API对于数据的处理,处理完数据之后,还需要把抽取完成的数据进行写入数据库。

我需要打通这三个环节,因为实验室数据库需要保护,我需要简单修改一下代码,写入自己的电脑数据库的就可以啦。

我使用了codex,在cline上部署这个终端CLI,非常非常方便,直接帮我把代码修改好了。

不过我花了许多时间了解那个数据库客户端mongdb这个数据库,花了半个小时以上,总算对于界面有些了解了,唯手熟尔吧,也没什么技术含量,看得多了自然就熟悉了。

概念了解:

在 MongoDB 的语境下,source_collection(源集合)和 target_collection(目标集合)并不是一个单一的特定功能名称,而是一对逻辑概念,通常出现在需要进行数据迁移、转换或聚合输出的操作中。

当你使用 MongoDB 的聚合管道(Aggregation Pipeline)处理数据并希望将结果保存下来时:

  • Source Collection (源集合): 你执行 .aggregate() 命令的原始数据集。
  • Target Collection (目标集合): 你通过 $out$merge 算子指定的存放结果的集合。

这是当前的修改好的代码,备份于此:

我的工作量/2026年度/3月份/icon/pic/main
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 kipleyarch@gmail.com
Obsidian