2026-05-09

  1. 05月09日
    1. 一、今日完成情况
    2. 二、今日感悟
    3. 三、备注
    4. 四、紫薇斗术分析
      1. 1、个人特点分析
        1. 1. 核心性格底色:高智、多疑、易内耗
        2. 2. 事业与财富逻辑:靠脑力与专业壁垒吃饭
        3. 3. 潜藏的雷区与变数(辅星揭示)
        4. 客观总结与生存建议
    5. 五、 Qwen3-32B 本地 vLLM 部署与调用说明
      1. 一、前置条件
      2. 二、启动服务(推荐)
      3. 三、常用环境变量(可选)
      4. 四、与本项目 main.py 对接
      5. 五、命令行快速验证(curl)
      6. 六、Python(OpenAI SDK)调用示例
      7. 七、后台运行与日志(可选)
      8. 八、重新下载或更新权重(可选)
      9. 九、重要注意事项
      10. 十、脚本位置一览
      11. 十一、监听原理解释
        1. 你现在的服务在监听什么
        2. 「其他虚拟用户」常见是哪几种
        3. 端口转发「实现方式」是什么(最常用:SSH)
        4. 怎么「测试是否满足」
        5. 安全提醒(对外或多人用时必看)
        6. mac 自己主机访问方法
        7. 服务器其他虚拟账户访问
    6. 六、大模型内网转公网HTTPS安全接入 配置笔记
      1. 整体架构
      2. 一、公网云服务器配置(ubuntu@VM-0-10-ubuntu)
        1. 1. 域名解析
        2. 2. SSL证书申请
        3. 3. Nginx 独立站点配置
        4. 4. 解决Nginx域名冲突
        5. 5. 安全组/防火墙规则
      3. 二、内网模型容器配置(root@d58125c354a4)
        1. 1. vLLM 启动命令(任意路径可执行)
        2. 2. 内网容器免密登录云服务器
        3. 3. 永久反向隧道(断线自动重连)
      4. 三、连通性测试命令
        1. 1. 云服务器本地测试隧道
        2. 2. 公网接口测试
      5. 四、接入调用配置
        1. 基础信息
        2. Python 调用示例
      6. 五、安全强制规范
      7. 六、日常运维常用命令

05月09日

一、今日完成情况

  • 完成大模型A100 的部署并且端口打通
  • 查看邮局的使用方式
  • 提词器的代码重构是否可以接入本地模型
  • 命理学:学习子女宫这一块的原理

二、今日感悟

  • 核心业务数据​:
    • 王晶让我干的API LLM部署完毕,不容易呀
    • 廖师兄的干货,我这两天需要好好消化一下
  • ​今日工作总结:​
    • 网络安全挺重要的,需要开始重视起来了,信息加密,端口不能泄露
    • 李书扬如果是博一的话,好厉害了,他还会白嫖Codex
    • 端口内网转发需要李舒扬管理员权限搞一下,不然没辙
    • 关于经费报销的事情,对接黄晓薇师姐。
  • ​明日工作计划:
    • 完成作业,包括:PPT演讲、考试内容梳理准备、网络基础作业完成
  • ​今日学习成长:​
    • 赶紧把cursor的额度花完,不然过期了,看看Codex方不方便

三、备注

需要我之前的去噪模型,其实建议去链接之前集成的服务器(3090,刚好够部署去噪模型),那个比较清晰,45608端口的机子里面穿插了好几个项目,比较杂不好找。
之前集成项目的服务器地址:
服务器:121.48.163.69:2224 fzdwxxcl.511
容器:docker exec -it alg_pro /bin/bash
python路径:/root/anaconda3/bin/python
项目路径:/home/Projects/algorithmProject
我的那部分文件在:/home/Projects/algorithmProject/Event_l
微调的去噪模型在:/home/Projects/algorithmProject/Event_l/Model

这个服务器比较硬件比较老,vs新版不兼容,建议直接ssh链,或者cursor去连接。或者去问一下王老板、徐老板,我们之前都在这里部署

A100的45608你可以用,但东西其实很杂,45619端口我存了点自己的数据和项目,可以的话暂时先别动

四、紫薇斗术分析

CleanShot 2026-05-09 at 17.12.58@2x CleanShot 2026-05-09 at 17.13.25@2x CleanShot 2026-05-09 at 17.13.54@2x

1、个人特点分析

这是一份剥离了滤镜的客观命理诊断报告。根据你提供的截图,该男命的格局具有非常鲜明的“偏科”和“技术/研究型”特征。以下是各项指标的硬核拆解:

1. 核心性格底色:高智、多疑、易内耗

  • 出厂设置(命无正曜): 命宫无主星,意味着自我意识的边界比较模糊。他不是那种从小就有极强目标感和坚定信仰的人,其性格和发展方向极度依赖外部环境的塑造(六分之一的概率,不算罕见,但意味着缺乏明确的主攻方向)。
  • 外挂引擎(借对宫太阳、巨门): 由于本身无主星,他的行为模式完全由迁移宫的“太阳+巨门”接管。
    • 巨门(庙):精准的扫描仪与双刃剑。 巨门星极亮,代表他拥有极强的逻辑分析能力、怀疑精神和洞察力,凡事都能看得比常人深,能一眼看穿漏洞。但副作用非常直接:嘴毒、爱抬杠、带有隐性傲气。他的言论往往一针见血,甚至偏向消极和刻薄,极其容易引发人际冲突和反感。
    • 太阳(落地/陷):能量不足的探照灯。 太阳主发散,但处于弱势位置,导致他虽然聪明且有时想热心助人,但续航力极差。做事容易五分钟热度、虎头蛇尾。精神上容易疲劳,常常吃力不讨好,属于典型的高智商但容易心力交瘁的类型。

2. 事业与财富逻辑:靠脑力与专业壁垒吃饭

  • 财帛宫(天机利、天梁庙): 这是他安身立命的根本。天机主智力、天梁主原则与专长。他赚钱的路径非常清晰——绝对不能靠体力或拼情商,必须靠纯粹的脑力、专业技能、策划推演或顾问咨询来获取财富。
  • 事业宫(天同陷、太阴陷): 事业内驱力存在硬伤。天同太阴双双落陷,意味着他在高压、竞争惨烈或需要极强进取心的职场环境中会非常痛苦。他容易产生得过且过、情绪化或逃避的心理,抗压能力有限。
  • 核心救赎(吉星满配,凶星为零): 他的三方四正汇聚了化权、化科、左辅、文曲,且没有煞星干扰。这是这个盘最大的底牌。这意味着只要他在某个垂直领域深耕,就能获得实际的权力(化权)、良好的业内名声(化科),并且总能在关键时刻得到他人协助(左辅)。文曲加持了巨门,使其具备出色的文案或学术表达能力。

3. 潜藏的雷区与变数(辅星揭示)

  • 直觉极高(阴煞+天巫): 他拥有非常强的第六感,对环境的变化和人心的善恶有极其敏锐的捕捉能力。
  • 小人隐患(伏兵+巨门): 命宫带有“伏兵”,且主导星是容易引爆口舌是非的巨门。他一生中最需要防范的就是“暗处的冷箭”。很多时候,他可能因为一句自认为客观但实际上刻薄的话,在无意中得罪了人,从而被人在背后使绊子。

客观总结与生存建议

整体画像: 这是一个典型的“专业技术派”或“学术研究者”的配置。他不适合在复杂的官场或需要八面玲珑的销售圈混,但他可以在需要深度逻辑、排错(Debug)、分析推演的领域做到顶尖。

执行建议:

  1. 扬长避短: 把巨门的“挑剔”和“怀疑”全部倾注到工作和事物上(比如学术分析、代码审查、系统架构),绝对不要用在人际交往中
  2. 闭嘴保平安: 必须刻意练习“看破不说破”。他的人际灾难几乎全来自于他的嘴和过度理性的批判欲。
  3. 专注深耕: 既然容易“虎头蛇尾”(太阳陷)且“缺乏特定方向”(命无正曜),最聪明的策略就是利用“化权+化科”的吉星优势,死磕一门硬核技术或专业,用绝对的专业壁垒来掩盖性格上的不讨喜。

五、 Qwen3-32B 本地 vLLM 部署与调用说明

本文说明在本机已通过 Hugging Face 缓存下载 Qwen/Qwen3-32B 后,如何用项目内脚本启动 vLLM OpenAI 兼容服务,以及如何用 main.py 或其它客户端调用。

一、前置条件

项目 说明
Python / Conda 已安装 vLLM(建议 ≥ 0.8.5;本项目脚本按 vLLM 0.17+--reasoning-parser qwen3 编写)
GPU 单卡 80GB 级别(如 A100 80GB)可满足 BF16 权重与 KV 缓存;脚本默认只用 第 1 张卡
模型 已下载到 HF 缓存:~/.cache/huggingface/hub/ 下对应 models--Qwen--Qwen3-32B(或使用本地目录 MODEL=/path/to/Qwen3-32B
网络 缓存已完整时,启动 可不联网;若仍从 Hub 校验元数据,需保证网络或配置镜像/代理

二、启动服务(推荐)

在仓库根目录执行(请先 conda activate 到你安装了 vLLM 的环境):

cd /path/to/python    # 本仓库根目录,例如 ~/Documents/code/python

chmod +x scripts/serve_qwen3_32b.sh   # 仅需首次

# 默认:GPU0,监听 0.0.0.0:8000,模型 Qwen/Qwen3-32B(从 HF 缓存加载)
./scripts/serve_qwen3_32b.sh

启动成功后,HTTP API 根地址为:

http://<本机IP>:8000/v1

Chat Completions 示例路径:POST http://127.0.0.1:8000/v1/chat/completions


三、常用环境变量(可选)

在运行 serve_qwen3_32b.sh 前通过 export 覆盖默认值:

变量 默认值 含义
CUDA_VISIBLE_DEVICES 0 使用的 GPU 编号
MODEL Qwen/Qwen3-32B Hugging Face 仓库 ID本地权重目录(含 config.json 等)
SERVED_MODEL_NAME Qwen/Qwen3-32B 客户端请求里填的 model 名称,需与业务配置一致
HOST 0.0.0.0 监听地址
PORT 8000 监听端口
MAX_MODEL_LEN 16384 最大上下文长度;显存紧张可改为 8192
GPU_MEMORY_UTILIZATION 0.92 vLLM GPU 显存占用比例
HF_ENDPOINT (官方 Hub) 国内可尝试 https://hf-mirror.com
PROXY_SETUP_SCRIPT 代理脚本路径,source 后需导出 http_proxy/https_proxy
SKIP_HF_DOWNLOAD_CHECK 未设置 若必须与 hf download 同时跑(不推荐),设为 1 跳过检查

代理示例(与你在 shell 中的 proxy_on 一致):

proxy_on && ./scripts/serve_qwen3_32b.sh

指定 GPU 与端口:

CUDA_VISIBLE_DEVICES=0 PORT=8001 ./scripts/serve_qwen3_32b.sh

完全离线目录(不从 Hub ID 解析):

export MODEL=/你的路径/Qwen3-32B
export SERVED_MODEL_NAME=Qwen/Qwen3-32B
./scripts/serve_qwen3_32b.sh

四、与本项目 main.py 对接

main.py 通过环境变量读取 LLM 地址与模型名(见文件顶部 LLM_BASE_URLLLM_MODELLLM_API_KEY)。

在项目根目录的 .env 中增加或修改为:

LLM_BASE_URL=http://127.0.0.1:8000/v1
LLM_MODEL=Qwen/Qwen3-32B
LLM_API_KEY=EMPTY

然后:

python main.py

说明:本地 vLLM 通常不校验 API Key,但 OpenAI SDK 要求传入非空字符串,使用 EMPTY 即可。


五、命令行快速验证(curl)

curl -s http://127.0.0.1:8001/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen/Qwen3-32B",
    "messages": [{"role": "user", "content": "用一句话介绍你自己。"}],
    "max_tokens": 256
  }'

六、Python(OpenAI SDK)调用示例

from openai import OpenAI

client = OpenAI(base_url="http://127.0.0.1:8000/v1", api_key="EMPTY")
r = client.chat.completions.create(
    model="Qwen/Qwen3-32B",
    messages=[{"role": "user", "content": "你好"}],
)
print(r.choices[0].message.content)

七、后台运行与日志(可选)

nohup ./scripts/serve_qwen3_32b.sh > vllm_qwen3_32b.log 2>&1 &
tail -f vllm_qwen3_32b.log

停止服务:

pkill -f 'vllm serve'
# 若有残留 EngineCore,再执行:pgrep -af VLLM

八、重新下载或更新权重(可选)

仅在需要重新拉取 Hub 文件时使用;不要与正在运行的 vLLM 同时进行

proxy_on   # 如需代理
./scripts/download_qwen3_32b.sh

可按需设置:HF_ENDPOINTMAX_WORKERS(网络不稳时用 1)、REPO(默认 Qwen/Qwen3-32B)。


九、重要注意事项

  1. 不要并行:同一台机器、同一 HF 缓存下,不要同时运行 hf download(同一模型)与 vllm serve,否则会争抢 ~/.cache/huggingface/hub/.locks/,表现为长时间 Still waiting to acquire lock。脚本已做启动前检查;务必先停其一再启另一。
  2. Qwen3 推理格式:服务使用 --reasoning-parser qwen3,便于分离思考链与最终回复;调用方式仍为标准 Chat Completions。
  3. 超时main.pycall_llm_with_retry 默认 timeout=20,本地大模型首 token 可能较慢,可按需调大。

十、脚本位置一览

脚本 作用
scripts/serve_qwen3_32b.sh 启动 vLLM OpenAI 兼容 HTTP 服务
scripts/download_qwen3_32b.sh 仅下载模型到 HF 缓存(网络差时先下载再 serve)

如有环境与脚本不一致(例如 vLLM 版本过旧不支持 qwen3 解析器),请以当前安装的 vllm serve --help 为准调整参数。

CUDA_VISIBLE_DEVICES=0 PORT=8001 /root/Documents/code/python/scripts/serve_qwen3_32b.sh

关闭服务指令:

fuser -k 8001/tcp

MacBook打通ssh端口

ssh -N -L 8001:127.0.0.1:8001 tecent-lab-server

十一、监听原理解释

你现在的服务在监听什么

serve_qwen3_32b.sh 里默认是 HOST=0.0.0.0PORT=8001,含义是:

  • 在本机 所有网卡 上监听 8001
  • 同一台物理机/虚拟机上的 其他系统用户(只要他们能访问你的 IP),都可以用 http://<你的机器IP>:8001 访问 OpenAI 兼容接口(例如 POST .../v1/chat/completions
  • 127.0.0.1 时才是「只有本机当前用户走 localhost」;0.0.0.0 已经是「对外网卡开放」

所以:不一定要端口转发,同一局域网里别人直接用你的 内网 IP + 8001 就行(前提是防火墙放行)。


「其他虚拟用户」常见是哪几种

场景 含义 典型用法
同一 Linux 多用户 别人 SSH 登录同一台机 他们用 http://<服务器内网IP>:8001/v1http://127.0.0.1:8001(仅当他们的进程跑在你这台机上且服务在本机监听)
同一台机上的容器/另一张网卡 网络命名空间不同 要用 宿主机在该网络上的 IP,不是容器里的随机 IP(除非你做端口映射)
不在同一台机、但能 SSH 到你这台机 同事笔记本 → 你的服务器 SSH 本地端口转发(最常见)
公网访问 家里/机房没有直连 frp / cloudflared / SSH -R / 云厂商负载均衡

端口转发「实现方式」是什么(最常用:SSH)

别人电脑上执行(把访问你机器上的 8001 映射到他本机):

ssh -N -L 8001:127.0.0.1:8001 你的用户名@你的服务器IP

Then 他在自己浏览器/脚本里用:http://127.0.0.1:8001/v1,请求会通过 SSH 隧道进到你服务器,再到你本机的 vLLM。

你要保证:vLLM 在服务器上监听的是 127.0.0.1:80010.0.0.0:8001
若只监听 127.0.0.1,只有本机直连;SSH -L 连到你的 SSH 登录会话所在机器时,一般访问的是 服务器上的 127.0.0.1,是可以的。

若你用 0.0.0.0:8001,隧道目标写 127.0.0.1:8001 仍然正确(本机回环上的服务)。


怎么「测试是否满足」

  1. 本机curl http://127.0.0.1:8001/v1/models
  2. 同一局域网另一台机器curl http://<你的服务器局域网IP>:8001/v1/models
    • 不通 → 查 防火墙firewalld/iptables/ufw)是否放行 8001
  3. 模拟「虚拟用户」走转发:用任意第二台机(或用手机热点另一台电脑)做上面的 SSH -L,再在第二台机 curl http://127.0.0.1:8001/v1/models

调用方式和你在本机一样:base_url = http://...:8001/v1model = Qwen/Qwen3-32B,与 test.py / main.py 一致。


安全提醒(对外或多人用时必看)

  • 当前 没有鉴权 时,任何能连上该端口的人都能用你的 GPU;至少应:防火墙仅对白名单 IP 开放,或前面加 反向代理 + API Key,或 只允许 SSH 隧道、不把 8001 暴露公网
  • Qwen3 思考模式会拉长响应;给别人用时注意 timeoutmax_tokens

一句话
别人能用你的模型的条件是:网络能到你的 HOST:PORT,且防火墙放行;端口转发只是把这条路径「接到另一台机器的本机端口上」,最省事的做法是 SSH -L,测试时用 curl /v1/models 从另一环境访问 即可验证。

如果你说的「虚拟用户」特指 Docker 里多个容器,需要说明你端口映射方式(-p),我可以按那种拓扑单独画一条访问路径(Ask 模式下我只能文字说明;若要改脚本绑定地址再切 Agent 模式)。

mac 自己主机访问方法

(base) kipley@Mac ~ % ssh -N -L 8001:127.0.0.1:8001 tecent-lab-server

ssh -N -L 8001:127.0.0.1:8001 tecent-lab-server

服务器其他虚拟账户访问

首先查看我当前虚拟账户的IP是多少:

hostname -I

(base) root@d58125c354a4:~/Documents/code/python# hostname -I
172.17.0.13

同事使用的方式:

同一服务器容器访问我的大模型服务:
地址:http://172.17.0.13:8001/v1
模型名:Qwen/Qwen3-32B
API密钥:EMPTY

使用指令测试是否连通模型服务:

curl http://172.17.0.13:8001/v1/models

测试代码如下:

from openai import OpenAI

# 同事容器内固定填写这个配置
client = OpenAI(
    base_url="http://172.17.0.13:8001/v1",  # 你的容器内网地址
    api_key="EMPTY",                        # 固定密钥
)

# 调用接口
response = client.chat.completions.create(
    model="Qwen/Qwen3-32B",
    messages=[
        {"role": "user", "content": "请写一段Python代码示例"}
    ]
)

# 输出结果
print(response.choices[0].message.content)

六、大模型内网转公网HTTPS安全接入 配置笔记

整体架构

内网容器 vLLM:8001 
       ↓ Autossh 加密反向隧道
公网云服务器 127.0.0.1:18001
       ↓ 独立Nginx + HTTPS + 密钥鉴权
公网统一入口:https://llm.litearch.cn/v1

核心规则:

  • 公网只开放 80、443、22严禁放行 8001/18001
  • 子域名 llm.litearch.cn 独立Nginx配置,不与博客混用
  • 博客GitHub Action自动构建不影响LLM接口配置

一、公网云服务器配置(ubuntu@VM-0-10-ubuntu)

1. 域名解析

域名:litearch.cn
新增A记录:

  • 主机记录:llm
  • 解析地址:云服务器公网IP
  • 已备案子域名无需额外备案

2. SSL证书申请

sudo certbot --nginx -d llm.litearch.cn

证书自动续期,无需手动维护。

3. Nginx 独立站点配置

配置文件路径:/etc/nginx/sites-available/llm-service

server {
    listen 443 ssl;
    server_name llm.litearch.cn;

    ssl_certificate /etc/letsencrypt/live/llm.litearch.cn/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/llm.litearch.cn/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    # 接口访问鉴权密钥
    if ($http_authorization != "Bearer LITEARCH_LLM_2026_SAFE_KEY") {
        return 401;
    }

    location / {
        proxy_pass http://127.0.0.1:18001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_connect_timeout 60s;
        proxy_read_timeout 120s;
    }
}

server {
    listen 80;
    server_name llm.litearch.cn;
    return 301 https://$host$request_uri;
}

启用配置:

sudo ln -s /etc/nginx/sites-available/llm-service /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

4. 解决Nginx域名冲突

清理 litearch.conf 中所有 llm.litearch.cn 多余server块,只保留主博客域名配置,避免端口域名冲突。

5. 安全组/防火墙规则

仅放行:

  • 22 :SSH运维
  • 80 :HTTP证书验证、自动跳转
  • 443 :HTTPS公网接口
    禁止放行:18001、8001

二、内网模型容器配置(root@d58125c354a4)

1. vLLM 启动命令(任意路径可执行)

CUDA_VISIBLE_DEVICES=0 PORT=8001 /root/Documents/code/python/scripts/serve_qwen3_32b.sh

服务监听:127.0.0.1:8001

2. 内网容器免密登录云服务器

# 生成密钥
ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519
# 推送公钥到云服务器免密
ssh-copy-id -i ~/.ssh/id_ed25519.pub ubuntu@llm.litearch.cn

3. 永久反向隧道(断线自动重连)

# 安装工具
apt install autossh -y
# 启动反向隧道:内网8001 → 云机本地18001
autossh -M 0 -N -R 127.0.0.1:18001:127.0.0.1:8001 ubuntu@llm.litearch.cn

关闭旧隧道:

pkill -f autossh

三、连通性测试命令

1. 云服务器本地测试隧道

curl http://127.0.0.1:18001/v1/models

2. 公网接口测试

curl -X POST https://llm.litearch.cn/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer LITEARCH_LLM_2026_SAFE_KEY" \
  -d '{
    "model": "Qwen/Qwen3-32B",
    "messages": [{"role": "user", "content": "你好"}]
  }'

四、接入调用配置

基础信息

  • 接口地址:https://llm.litearch.cn/v1
  • 模型名称:Qwen/Qwen3-32B
  • API Key:EMPTY

Python 调用示例

from openai import OpenAI

client = OpenAI(
    base_url="https://llm.litearch.cn/v1",
    api_key="EMPTY"
)

response = client.chat.completions.create(
    model="Qwen/Qwen3-32B",
    messages=[{"role": "user", "content": "你好"}]
)
print(response.choices[0].message.content)

五、安全强制规范

  1. 绝不对外放行 18001/8001 端口,只走443 HTTPS
  2. 所有公网接口必须加 Bearer 密钥鉴权
  3. 同事仅接口调用,无云服务器/内网服务器SSH账号权限
  4. 子域名独立Nginx配置,不混入博客配置,避免被GitHub Action覆盖
  5. SSH禁用密码登录、改端口、仅密钥登录,防爆破

六、日常运维常用命令

  1. 重启LLM服务(内网服务器端):CUDA_VISIBLE_DEVICES=0 PORT=8001 /root/Documents/code/python/scripts/serve_qwen3_32b.sh
  2. 重启隧道(云服务端):pkill -f autossh && autossh -M 0 -N -R 127.0.0.1:18001:127.0.0.1:8001 ubuntu@llm.litearch.cn
  3. Nginx检查重载(云服务端):sudo nginx -t && sudo systemctl reload nginx
  4. 查看隧道进程(云服务端):ps aux | grep autossh

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 kipleyarch@gmail.com
Archive PDF预览 PPTX Obsidian