前言

作为一个人工智能方向的学生,平时需要跑深度学习模型、折腾多模态大模型,或者训练像咱们之前搞的行人重识别(Re-ID)这种吃显存的“电老虎”,我发现真的是:

“算力自由”与“人身自由”没办法兼得。

实验室里那台插着双卡 5090 甚至 A100 的工作站跑起模型来真是又快又轻松,但这就意味着我必须被焊在工作站旁边或者机房,每天盯着黑乎乎的终端,感受这来自高算力显卡的“温暖”。偶尔在宿舍想要调用一下大模型,看着自己只有8GB显存的笔记本显卡甚至核显,只能叹气:没办法,还是得去机房。

“为什么不用向日葵或者 ToDesk 远程桌面?”
简单来说,它们传输的是“画面”。画面就需要额外的网络带宽,这对于网络的要求非常高。偶尔发生的高延迟,丢包或者卡顿还是非常影响工作或者实验效率的。其实说白了,我们写代码的时候也不需要看到工作站那完整的 Windows 桌面,我们只需要让本地的代码能调用远端的算力。

于是,这就引出了今天这篇文章的主题:如何远程访问实验室的算力中心。

我们希望完成实验的地方不囿于机房,随时随地拿起笔记本就可以跑通代码。在宿舍终究比在机房舒服,对吧?

方案大比拼:为什么是 Tailscale + FastAPI?

要实现远程调用,我们有很多条路可以走,但并不是每一条都好走。

  • 方案 A:ToDesk / 向日葵(传统远程桌面)

    • 优点:开箱即用,能完全控制远程电脑。
    • 致命缺陷:简单是真简单,但卡也是真卡。严重受制于公网带宽。画质糊、延迟高,Windows等这类有图形界面的系统还好说,如果是纯命令行的Ubuntu,你就受着吧,一受一个不吭声。
  • 方案 B:SSH 内网穿透(FRP / Ngrok)

    • 优点:命令行直连,资源消耗极低。
    • 致命缺陷:门槛极高。你需要自己租一台有公网 IP 的云服务器来做中转(还要花钱),配置各种防火墙和端口映射,对小白极度不友好。
  • 方案 C(本次主角):Tailscale(虚拟局域网)+ FastAPI(服务化接口)

    • Tailscale 负责底层组网:它基于WireGuard协议,不管你的工作站在校园网多深的内网里,不管你的笔记本连的是哪个星巴克的 Wi-Fi,它都能让这两台设备瞬间处于同一个“虚拟局域网”中,实现秒级、加密的直接通信,并且完全免费。
    • FastAPI(或 vLLM 自带接口)负责业务对接:把工作站上的大模型封装成一个标准的 HTTP 接口。你的笔记本通过 Tailscale 提供的固定 IP,直接发送请求。

这种架构的好处在于:

  • 算力与应用彻底解耦
  • 你的笔记本看不到工作站的桌面,它只负责发送数据(比如把一张车牌照片通过网络传过去)。
  • 工作站的显卡瞬间算完,把结果(车牌号字符串)传回来。
  • 整个过程在你的本地代码里,就像调用了一个普通的函数一样自然,完全感觉不到延迟。

这样一来,实验室的电脑就像你自己的远程算力后台,调用体验与 DeepSeek、千问这些 API 类似,但你同时还能保留自己实验环境的灵活性和成本优势。

实战步骤分解

  1. 第一步:用 Tailscale 打通“任督二脉”

    这是整个方案的基石。

    • 注册与安装:去 Tailscale 官网注册一个账号(直接用微软或 GitHub 账号登录即可)。然后在你的工作站和本地笔记本上分别下载安装 Tailscale 客户端。
    • 连接入网:在两台电脑上登录同一个账号。此时,见证奇迹的时刻到了!
    • 获取专属 IP:打开你的 Tailscale 控制台(或者点开状态栏图标),你会发现每台机器都被分配了一个以 100. 开头的固定 IP 地址(比如 100.80.100.120)。
    • 记住工作站的这个 IP,因为只要两台电脑都挂着 Tailscale,它们就可以通过这个 IP 互相找到对方。
  2. 第二步:在工作站(服务端)部署模型与接口

    OK,既然两台电脑已经连通,接下来就是让工作站把它的算力“暴露”出来。

    以部署 Qwen 这样的大模型为例。在工业界,大家很少自己手写接口,而是使用像 vLLM 这种极其暴力的推理框架。它不仅速度极快,更重要的是,它启动后自带一个兼容 OpenAI 标准的高性能 Web 接口(底层就是 FastAPI 写的)。

    在工作站的终端(或者 WSL2 环境)里,激活你的 Conda 环境,敲下类似这样的启动命令:

    vllm serve ~/models/Qwen3.5-9B \
      --served-model-name Qwen/Qwen3.5-9B \
      --host 0.0.0.0 --port 8000 \
      --tensor-parallel-size 2
    

    这里的核心是 --host 0.0.0.0

    默认情况下,服务可能只监听 localhost(即只允许工作站自己访问自己)。加上 0.0.0.0,就相当于工作站向整个网络宣告:

    “不管是本地,还是通过 Tailscale 连进来的好兄弟,只要访问我的 8000 端口,我都接客!”

    • Windows 用户须知:如果在 Windows 下部署,记得去“高级安全 Windows Defender 防火墙”里,新建一个入站规则,把 8000 端口放行,否则网络请求会被系统无情拦截。
  3. 第三步:在笔记本(客户端)优雅地写代码

    现在,你可以在宿舍打开你的轻薄本了。

    • 不需要安装沉重的 CUDA 驱动。
    • 不需要配置几 GB 的模型文件。
    • 只需要在本地打开 VSCode,写下几行极其清爽的 Python 代码,调用 openai 库即可:
    from openai import OpenAI
    
    # 偷梁换柱!把 base_url 改成工作站的 Tailscale IP 和端口
    client = OpenAI(
        api_key="EMPTY",
        base_url="http://100.80.100.120:8000/v1"
    )
    
    response = client.chat.completions.create(
        model="Qwen/Qwen3.5-9B",
        messages=[
            {"role": "user", "content": "你好,请告诉我你现在是在哪里运行的?"}
        ]
    )
    
    print(response.choices[0].message.content)
    

    当你按下回车键,这句请求会瞬间通过 Tailscale 隧道跨越几百公里,直达你实验室工作站的 8000 端口。工作站上的双显卡直接芜湖起飞,不到一秒钟,结果就会顺着隧道返回到你轻薄本的屏幕上。

    代码敲在本地,算力跑在云端。零延迟,高体验。

进阶玩法:如果我要跑自己的 YOLO 或者 Re-ID 模型呢?

vLLM 帮我们把大模型封装好了接口,那如果我们想用工作站跑之前自己训练的行人重识别(Re-ID)模型,或者 YOLO 目标检测模型该怎么办?

答案是:自己写一个极简的 FastAPI 服务

这就好比你自己开了一家饭店(FastAPI),你的 Re-ID 模型是后厨的大厨。

  • 写一个 /predict 的后端路由(工作站端):接收笔记本传过来的图片(Base64 字符串或者图片二进制流)。
  • 调用模型:服务端收到图片后,扔给后厨的 PyTorch 模型,得到比如目标框的坐标、置信度,或者 Re-ID 的 2048 维特征向量。
  • 返回数据:把这些特征向量打包成标准的 JSON 字典返回。

你的笔记本只需要用 requests.post() 发送图片并接收 JSON,剩下的所有绘图、清洗数据的逻辑全在笔记本本地完成。这样,哪怕你在处理几十个 G 的图片数据集,本地的体验也如同行云流水。

总结

当你掌握了“网络组网 + 接口封装”这套组合拳之后,你会发现不仅提升了自己的开发体验,未来去到企业里也完全不虚。

因为无论是阿里云、腾讯云,还是国外的 AWS 租用顶配 H100 服务器,大家的核心架构全都是一样的:云端拉起环境和接口 ➔ 防火墙放行端口 ➔ 本地无缝调用 API。 所以,别再忍受远程桌面的卡顿了。赶紧去把实验室工作站的端口打开,开启你的“远程炼丹”之旅吧!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐