跳转至

Blog

本博客已经支持 RSS 订阅功能,你可以通过以下链接订阅我的博客的 RSS 和 JSON Feed:

Static Badge Static Badge

或者直接复制以下链接到你的 RSS 阅读器:

  • RSS: https://www.philfan.cn/feed_rss_created.xml
  • JSON Feed: https://www.philfan.cn/feed_json_created.json


AI/ML 分会场

dynamic.ai

DRA dynamic resource allocation

  • 粒度精确到卡,如果放小模型,显存利用率低(~5%)
  • 小模型在垂直领域更稳定幻觉更少
  • AWS:提供粒度为半卡的调度。痛点:还是太大了

dynamia.ai:异构 GPU 资源调度 ( 主要负责南北向流量的资源申请 )

  • 调度器层:调度器扩展
  • 容器层:hami core 符号劫持

volcano

  • 也使用 hami core
  • 任务级调度能力较优

multi-agent

Why agent: LLM is certainly the main application is the trend of AI

  • Function call is a turning point where we can use some existing tools
  • Modern agents:
    • Task decomposition
    • Tools selection
    • Memory
    • Multi-agent

strands-agents: an OSS given by AWS

  • built-in tools: python tools; MCP tools; pre-built tools;
  • a large set of tools with better support and intergration for cloud services
  • support multiple types of model

Orchestrator: agents as tools, with every

  • agent graph: concat some tools into a bigger part
  • graph vs workflow

swarm mode: decentralized; share context

Structured out

put & func call in vLLM

  • choice:choice = ["red","green"]
  • regex: json schema
  • son
  • grammar
  • sql
  • EBNF / Lark grammars

中间输出 json

  • structural tag

guided output CPU bubble 问题

原理

  • sampler 中把不符合要求的去除
  • 状态机跟踪某个时间点哪些 token 是合规的

tool parser

template 渲染

RoleBasedGroup

  1. 迭代性:PD 分离一定是未来的架构吗?extensive
  2. 有状态性:
  3. 运行可靠

RBG 是面向多角色协同场景设计的工作负载

  • 多角色的创建、调度、升级、故障自愈、服务发现

蚂蚁:Gateway API inference extension GIE

什么是云原生

什么是 `

genai-bench

llm-optimizer SLO

goodput 的理念:满足 SLO 约束的

GuideLLM from vllm

stepfun 的论文

计数器

sglang roter

AIGW

业务架构还没有收敛,基础架构

Share on Share on

Note

  1. 另一个推理框架 sglang 的分享
  2. Aibrix 火山的开源端到端推理框架,主要在集群
  3. Elastic EP 支持容错的一个设计,更灵活的扩缩容:mooncake mooncake-pytorch 后端
  4. dgx spark 打广告
  5. Nvidia 的一个根据需求计算 PD 分离配置的工具 aiconfiguratorgithub 百星)
  6. 在大规模分布式编译器/框架 triton-distributed

Main Takeaway

  1. 小规模的自己玩的系统确实不需要注意可观测,可观测是为了面向服务,更好上线 2.

sglang 社区

一些新的 feature

  • Hierachical KV Caching
    • backend support: mooncake, 3FS, NIXL
  • Piecewise CUDA Graph and Torch Compile
  • what is 推理 backend,常见的有哪些
  • 通信源语有哪些 all reduce 是什么
  • overlap scheduling with spec decoding
  • milestone & roadmap
    • wanna to support more features zhengjiaode
    • turn these methods into a callable library so that everyone can use

Dynamo pd planner Slang model gateway Vllm semetic router

AIbrix

AIbrix 火山引擎 性能与成本

优势

  1. 面向生产环境,经过大规模线上环境检验:生产中部署大模型比较复杂:限流容错弹性
  2. 开源、可扩展
  3. 推理全栈

分布式 / 分离式:

  • 为什么需要分离式的部署

并行方式:TP DP EP

model -》资源的异质性 -

dense - sparse 分离

  • KVCache 的架构
  • 支持多种存储

大模型部署优化 K8s 控制面 + 数据面

搜广推按照流程而不是 model 拆分

分离方法:中心式;p2p

  • 面向 pd 分离的请求路由
  • Pd 请求的编排

Kvcache 的卸载 交给第三方的 management 远端 rdma 降低 ttft

  • 不同的策略支持 plugin

成本问题

弹性伸缩:cpu 利用率 latency

传统指标是有局限性的

Qps 没有升高 latency / utils 都升高

特定伸缩的 metrics 2508.19559

Lora 微调的降本 长尾模型的支持,70 模型承担 30% 的流量 vllm 的模型恭喜爱过你

如何使用 serverless 的方式中

aibrix

elastic EP

多模型 serving

更灵活的扩缩容

支持部分 rank 偶发故障的 ep 并行方案 计算通信计算通信

card lost

qps=16

mooncake EP 故障感知的通讯库:动过点对点 GPU RDMA mooncake pytorch 后端 具备容错的通信源语

部分 rank 失效的 EPLB 算法’

个人开发者在桌面的 AI 对于大模型开发的

  • 大内存
  • AI 软件
  • 支持 cuda

RDMA 双机可以实现 FP4 405B

Ai Configurator

Welcome to AIBrix — AIBrix

痛点 1: PD 是否更优 痛点 2: PD 如何配置

并行的方式

Triton-distributed

vlm 优化

Vlm 数据缓存:多图重复场景,computer use agent;具身智能:T 时刻 1 张传感器 +n 张低分辨率

结合具体场景

多模态数据序列化

zmq

pytorch 底层 安全角度

算子库选择很多

多模态模型 decode 次数很少 所以 ll 上的配置可能需要重新设置

SGlang on hopper -96G

机内通信快 机间通信慢 算力的瓶颈

TP8 方式部署

SLO 要求

token 到达无序。Down gemm

EPLB:应该同时激活的 expert 放到两个机器上,开销会高很多,高概率激活的两个专家在一个卡上面激活 5%

专家 LB 有权重迁移 毛刺会影响服务

Async rebalance 缓解这个 问题

EP16 50% 走机内通信

flashMLA backend 艳吗机制 导致 topk 必须是 1

算力不高的卡 batchsize 比较小

如何做优化

SBO & TPO

Share on Share on

Aliyun ECS + Mkdocs 网站部署与配置

一、前提条件

  1. 拥有一个域名,例如 philfan.cn
  2. 拥有一台服务器,且服务器具有可访问公网 IP,例如 47.xxx.xxx.xxx
  3. 已经有 Mkdocs 文档,比如 ( gh-pages分支 )

二、准备网站目录

假设你的 MkDocs 构建输出目录为 /www/philfan.cn

sudo mkdir -p /www/philfan.cn
sudo chown -R USERNAME:USERNAME /www/philfan.cn
sudo chmod -R 755 /www/philfan.cn

⚠️ USERNAME 用户是你用于部署网站的普通用户,拥有该目录的写权限即可,无需 sudo


三、配置 Nginx

sudo apt-get install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

1. 创建站点配置文件

sudo vi /etc/nginx/sites-available/philfan.cn.conf

内容示例:

配置 nginx serve 80 端口,根目录是 /www/philfan.cn
server {
    listen 80;
    server_name philfan.cn www.philfan.cn;

    root /www/philfan.cn;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ /\. {
        deny all;
    }

    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml+rss image/svg+xml;
    gzip_min_length 256;
}

2. 测试配置并重载 Nginx

sudo ln -s /etc/nginx/sites-available/philfan.cn.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

四、配置 GitHub Actions 自动上传

原理其实就是 scp 上传文件到服务器

在仓库中创建 .github/workflows/ssh-upload.yml

name: upload-to-server

on:
  workflow_run:
    workflows: ["deploy"]
    types:
      - completed

jobs:
  upload:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout gh-pages
        uses: actions/checkout@v3
        with:
          ref: gh-pages

      - name: Deploy to Server via SSH
        uses: appleboy/scp-action@v0.1.7
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          source: "./"
          target: "/www/philfan.cn"

1. 配置 GitHub Secrets

GitHub 仓库 Settings → Secrets and Variables → Actions 添加:

Secret 名称 内容
SSH_HOST 服务器公网 IP 或域名
SSH_USER USERNAME
SSH_PRIVATE_KEY 对应 SSH 私钥(用于登录服务器)

2. 生成 SSH 密钥对(本地)

生成 SSH 密钥对
ssh-keygen -t ed25519 -C "github-action-deploy"
复制公钥到服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub USERNAME@47.xxx.xxx.xxx 
# 也可以
cp ~/.ssh/id_ed25519.pub ~/.ssh/authorized_keys
测试
ssh -i ~/.ssh/id_ed25519 USERNAME@47.xxx.xxx.xxx

五、阿里云 DNS 配置

  1. 登录阿里云控制台:https://dns.console.aliyun.com
  2. 选择你的域名,进入“解析设置”
  3. 添加解析记录:

    记录类型 主机记录 记录值(服务器 IP 说明
    A @ 47.xxx.xxx.xxx 根域名 philfan.cn
    A www 47.xxx.xxx.xxx www.philfan.cn
  4. 保存,等待 5~10 分钟生效

  5. 测试解析:
dig philfan.cn +short
dig www.philfan.cn +short

浏览器访问:

http://philfan.cn
https://philfan.cn(如已配置 HTTPS)

Share on Share on

Mkdocs 瘦身

图片 to 图床

由于图片特别多,而且之前的图床文件又很大了,将近 800MB,所以决定重新换一下

可能之后图床这块的费用要大一些

一些查看命令

命令(先预览,再删除)

  • 先预览将被删除的所有 assets 目录:
find "/Users/philfan/CodeSource/Phil-Fan.github.io/docs" -type d -name assets -print
  • 确认无误后,执行删除:
find "/Users/philfan/CodeSource/Phil-Fan.github.io/docs" -type d -name assets -exec rm -rf {} +

文件大小统计并排序(macOS,按字节)

  • 仅看最大的 20 个文件
find "/Users/philfan/CodeSource/Phil-Fan.github.io" -type f -exec stat -f "%z %N" {} + | sort -n | tail -20
  • 统计指定路径下一层目录 / 文件大小并按大小排序(人类可读)
du -h -d 1 

Share on Share on

Linux L2TP VPN 配置与网络调试

在玉泉教学楼中用 Linux 配置 L2TP VPN,记录一下相关的配置过程。

环境

一、教学办公区:紫金港校区均可通过自动获取 IP 上网。其他校区教学办公区,需设置静态 IP 地址访问网络。可咨询身边同学同事,或致电信息技术中心 24 小时服务热线 0571-87951669 获得帮助。

二、学生宿舍区 紫金港和玉泉校区学生宿舍可自动获取IP,使用VPN账号登录认证后才可访问校内和校外网络。其他校区学生宿舍需绑定IP,请关注并登陆“浙大学生公寓管理服务中心”,具体操作如下图所示。如有疑问可致电信息技术中心24小时服务热线0571-87951669咨询。

来源:有线网络服务说明

一、环境说明

以校园或企业内网 VPN 为例,假设网络参数如下:

项目 示例值 变量名
本机 IP 10.15.xxx.xx $LOCAL_IP
子网掩码 255.255.255.0 $LOCAL_MASK
本地网关 10.15.xxx.xx $LOCAL_GW
DNS 服务器 10.10.0.21 $DNS_SERVER
VPN 服务器 10.5.1.7 10.5.1.9 $VPN_SERV
拨号后 VPN 网关(ppp0 IP) 210.32.xxx.xx $VPN_GW
有线网卡设备 eth0(视系统可能为 eno1eno2 等) $ETH_DEV
VPN 设备接口 ppp0 $PPP_DEV

拨打信息中心电话0571-87951669,转 0

  • 你所在实验室的 IP 地址$LOCAL_IP
  • 默认网关$LOCAL_GW
  • DNS$DNS_SERVER

二、常用工具安装

1️⃣ 安装网络基础工具包

安装网络基础工具包
sudo apt update
sudo apt install net-tools -y

提供ifconfig , route , netstat等命令。

2️⃣ 安装 DNS 工具

安装 DNS 工具
sudo apt install dnsutils -y

提供 nslookup,用于测试域名解析。

3️⃣ 安装路由追踪工具

安装路由追踪工具
sudo apt install traceroute -y
安装后验证
ifconfig
nslookup www.baidu.com
traceroute www.google.com
sudo apt install xl2tpd strongswan ppp -y

三、L2TP 基础配置

配置 IP 地址
sudo ip addr flush dev eth0
sudo ip addr add 10.15.192.59/24 dev eth0
sudo ip link set eth0 up
sudo ip route add default via 10.15.192.1 dev eth0

eth0 是网卡名称,需要根据实际情况修改。

ping -c 4 10.15.192.1

1️⃣ 编辑 L2TP 配置文件

sudo vi /etc/xl2tpd/xl2tpd.conf
[lac ZJU_VPN]
lns = 10.5.1.7
redial = yes
redial timeout = 15
max redials = 5
require pap = no
require chap = yes
require authentication = yes
name = $student_id@$SERVICE_TYPE
ppp debug = no
pppoptfile = /etc/ppp/options.xl2tpd.zju

service_type 浙大有 10 30 50 元三个档网费,分别对应的使用域是 a,c,d

2️⃣ 创建 PPP 选项文件

sudo vi /etc/ppp/options.xl2tpd.zju
插入内容
noauth
proxyarp
defaultroute

3️⃣ 设置认证信息

sudo vi /etc/ppp/chap-secrets
插入内容
$USER_NAME@$SERVICE_TYPE    *   "$USER_PASSWORD"    *

四、启动与拨号连接

启动与拨号连接,没有出现就多输入几遍
sudo service xl2tpd start
echo "c ZJU_VPN" | sudo tee /var/run/xl2tpd/l2tp-control
echo "c ZJU_VPN" | sudo tee /var/run/xl2tpd/l2tp-control
echo "c ZJU_VPN" | sudo tee /var/run/xl2tpd/l2tp-control
echo "c ZJU_VPN" | sudo tee /var/run/xl2tpd/l2tp-control

拨号成功后,用以下命令查看新建的 PPP 接口:

ifconfig ppp0

五、路由配置原则

VPN 连接后需要手动调整路由,以保证:

  1. 校园 / 企业内网(10.x.x.x)流量仍走本地网关。
  2. 外网流量通过 VPN

✅ 推荐配置命令

sudo ip route flush dev enP2p1s0
保证 VPN 服务器仍能通过原网关访问
sudo route add -host $VPN_SERV gw $LOCAL_GW metric 1 dev $ETH_DEV
删除旧的默认网关
sudo route del default gw $LOCAL_GW
设置新的默认网关(VPN)
sudo route add default gw $VPN_GW dev $PPP_DEV metric 1
添加内网转发规则(保留校内访问)
sudo route add -net 10.0.0.0 netmask 255.0.0.0 gw $LOCAL_GW dev $ETH_DEV

⚠️ 顺序很重要: 必须先添加内网路由,再删除旧网关,否则 SSH 或远程连接可能中断。

六、网络测试与排查

1 查看路由表

ip route show
# 或
route -n

确认:

  • 默认路由 ( default ) 指向 $PPP_DEV
  • 10.0.0.0/8 指向 $LOCAL_GW

2 Ping 测试连通性

ping -c 4 $LOCAL_GW        # 测试本地网关
ping -c 4 $VPN_GW          # 测试 VPN 网关
ping -c 4 8.8.8.8          # 测试外网 IP

3 检查 DNS 配置

cat /etc/resolv.conf

应包含:

nameserver $DNS_SERVER

如果解析失败,可临时切换为公共 DNS

sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'

测试:

nslookup www.baidu.com

4 路由追踪

路由追踪
traceroute 8.8.8.8
  • 若卡在第一跳 → 本地路由问题
  • 若卡在第二跳 → VPN 转发异常
  • 若能到外网 → DNS 或防火墙问题

七、常见错误与解决方案

错误类型 现象 解决方案
NS_ERROR_NET_TIMEOUT 浏览器访问超时 检查能否 ping 外网;若能,修改 DNS
Network unreachable ping 任意地址失败 路由配置错误;确认 default 指向 $PPP_DEV
File exists route add 报错 表示路由已存在,先删除后重新添加。
无法访问内网 VPN 正常但校内网断开 补充 10.0.0.0/8$LOCAL_GW 路由。

调试流程:

工具安装 → VPN 拨号 → 路由配置 → ping 测试 → DNS 检查 → traceroute 分析

核心原则:

  • 内网走 $LOCAL_GW
  • 外网走 $VPN_GW
  • DNS 正常解析后,网络才真正连通

Share on Share on