大模型联邦学习配置:从零搭建本地训练环境

联邦学习让多个参与方在不共享原始数据的前提下协作训练模型。
如果你手头有一台带GPU的服务器或工作站,想快速跑通大模型联邦学习的配置,本文按“准备环境→安装依赖→编写配置→启动训练→验证结果”的顺序,给出可以直接照做的命令和代码片段。

环境准备:确认硬件与系统版本

先确认机器满足最低要求。
大模型联邦学习对显存和内存有一定要求,建议至少16GB显存、32GB内存,系统用Ubuntu 20.04或22.04。
执行以下命令查看基础信息:

nvidia-smi
free -h
df -h

nvidia-smi能正常输出显卡型号和驱动版本,说明GPU驱动已就绪。
如果提示命令不存在,需要先安装NVIDIA驱动,这一步不在本文展开,可参考显卡厂商文档。

接着安装Python 3.9或3.10,并创建独立虚拟环境,避免污染系统包:

sudo apt update
sudo apt install -y python3.10 python3.10-venv python3-pip
python3.10 -m venv ~/fl-env
source ~/fl-env/bin/activate

激活后命令行提示符前会出现(fl-env),表示已进入虚拟环境。
后续所有安装和运行都在这个环境里进行。

安装依赖:PyTorch与联邦学习框架

大模型训练依赖PyTorch,联邦学习协调层选用Flower(一个轻量级的联邦学习框架)。
先装PyTorch,根据CUDA版本选择对应命令。
用nvidia-smi右上角显示的CUDA Version,例如12.1,则执行:

pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121

如果网络较慢,可以临时换用国内镜像源,但注意镜像源可能同步滞后,安装后建议用pip show torch核对版本。

然后安装Flower和常用工具:

pip install flwr[simulation] numpy pandas

安装完成后,用下面命令验证关键包是否可导入:

python -c "import torch; print(torch.__version__, torch.cuda.is_available())"
python -c "import flwr; print(flwr.__version__)"

如果torch.cuda.is_available()返回True,说明GPU可用;
返回False则检查驱动和CUDA版本是否匹配。

配置联邦学习任务:定义模型与客户端

新建项目目录,
例如~/fl-demo,
在里面创建两个文件:model.py和client.py。model.py定义一个简单的大模型结构,
这里用小型Transformer示意,
实际替换成你的模型即可:

# model.py
import torch
import torch.nn as nn

class TinyModel(nn.Module):
    def __init__(self, vocab_size=1000, hidden=128):
        super().__init__()
        self.embed = nn.Embedding(vocab_size, hidden)
        self.fc = nn.Linear(hidden, 2)

    def forward(self, x):
        return self.fc(self.embed(x).mean(dim=1))

def get_model():
    return TinyModel()

client.py负责加载本地数据、训练和向服务器上报参数。
Flower的客户端需要实现fit和evaluate方法:

# client.py
import flwr as fl
import torch
from model import get_model

class FLClient(fl.client.NumPyClient):
    def __init__(self):
        self.model = get_model()
        self.optimizer = torch.optim.SGD(self.model.parameters(), lr=0.01)

    def get_parameters(self, config):
        return [val.cpu().numpy() for val in self.model.state_dict().values()]

    def fit(self, parameters, config):
        state = self.model.state_dict()
        for k, v in zip(state.keys(), parameters):
            state[k] = torch.tensor(v)
        self.model.load_state_dict(state)
        # 这里替换为你的真实数据加载逻辑
        x = torch.randint(0, 1000, (32, 10))
        y = torch.randint(0, 2, (32,))
        loss_fn = torch.nn.CrossEntropyLoss()
        self.optimizer.zero_grad()
        loss = loss_fn(self.model(x), y)
        loss.backward()
        self.optimizer.step()
        return self.get_parameters(config), 32, {"loss": loss.item()}

    def evaluate(self, parameters, config):
        return 0.5, 32, {"accuracy": 0.8}

服务端用Flower自带的start_server启动,指定轮数和最小客户端数:

python -m flwr.server start --num-rounds 3 --min-num-clients 1

另开一个终端,激活同一虚拟环境,启动客户端并连接到本机服务端:

python -c "import flwr as fl; from client import FLClient; fl.client.start_numpy_client(server_address='127.0.0.1:8080', client=FLClient())"

看到服务端打印聚合进度、客户端打印训练loss,说明配置基本跑通。

避坑指南:依赖冲突与网络配置

依赖冲突是最常见的问题。
PyTorch和Flower对numpy版本可能有不同要求,安装时如果出现ERROR: pip's dependency resolver提示,优先按提示升级或降级numpy,不要直接忽略。
建议在虚拟环境里用pip freeze > requirements.txt记录当前版本,方便回滚。

端口不通时,先确认服务端监听地址。
默认127.0.0.1:8080只允许本机连接,如果客户端在另一台机器,需要把服务端启动参数改为--server-address 0.0.0.0:8080,并检查防火墙是否放行8080端口:

sudo ufw allow 8080/tcp
sudo ufw status

显存不足报错CUDA out of memory时,减小batch_size或模型规模。
示例中batch_size为32,实际大模型可能需要降到4或8。

客户端连不上服务端,先ping测试网络,再用telnet 服务端IP 8080确认端口可达。
如果服务端在云服务器上,检查安全组入方向规则是否放行。

验证配置是否生效

跑完一轮训练后,从三个层面确认结果:

  • 服务端日志出现Round 1、aggregate等字样,且没有异常退出。
  • 客户端fit返回的loss值有变化,不是恒定不变。
  • 用nvidia-smi观察训练期间GPU利用率是否上升,若一直为0,说明模型没有在GPU上运行,检查代码中是否调用了.to('cuda')。

最后保存一次模型参数,确认文件能正常写出:

python -c "import torch; from model import get_model; m=get_model(); torch.save(m.state_dict(), 'test.pt'); print('saved')"

只要上述检查项都通过,大模型联邦学习配置就算完成。
后续可以替换真实数据集、增加客户端数量,并调整聚合策略。
遇到报错时,优先回看虚拟环境是否激活、依赖版本是否匹配、端口和防火墙是否放行,这三类问题占了新手配置失败的大多数。

分享到:
上一篇
大模型数据隐私保护:企业部署前必须完成的配置与自查
下一篇
大模型隐私计算配置:零基础搭建本地安全推理环境
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意