V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rjagge
V2EX  ›  程序员

如何迁移整个深度学习服务器? [目标服务器不能连接外网]

  •  
  •   rjagge · 4 天前 · 1262 次点击

    各位老哥, 接到老板需求需要迁移深度学习平台从[旧服务器]到[新服务器]: 需要把这些旧服务器环境, 数据, 和 llm 的模型参数全部搬迁到一个新服务器

    [旧服务器介绍] 是 ubuntu 系统, 然后通过 pytorch, trasnformers 等框架进行大语言模型的训练, 然后使用 conda 进行 python 的包管理[大概的意思, 标准的深度学习环境]. 旧服务器下载了三个 70b 的模型,用于本地部署.

    [新服务器介绍] 新服务器有安全保护限制不能够连接到互联网. 也就是说, pip install, apt install 以及下载模型参数都不被允许.

    [可能的方案] 我个人有限的认知是通过 docker 一次性打包.

    我接到的通知是, 我只能够通过在机房内通过物理上传的方式进行实验环境的移植. 老哥们有什么好的方法和建议, 能够方便的做这个移植的事情吗?[小弟从未搞过离线移植]

    23 条回复    2024-11-11 20:07:06 +08:00
    chihiro2014
        1
    chihiro2014  
       4 天前
    把硬盘拔了,装到新服务器
    defunct9
        2
    defunct9  
       4 天前
    docker 是行不通的。直接打包旧服务器的东西,然后传到新服务器上即可。难度不大,就是细节,不要遗漏
    rjagge
        3
    rjagge  
    OP
       4 天前
    @defunct9 为什么 docker 行不通呢?
    rjagge
        4
    rjagge  
    OP
       4 天前
    @defunct9 [直接打包旧服务器的东西] 我的理解是打包 conda 环境, apt 依赖, 数据和模型; 还有其它我遗漏的吗
    rjagge
        5
    rjagge  
    OP
       4 天前
    @chihiro2014 那必然是不行的....我们原来的服务器还要继续使用..
    defunct9
        6
    defunct9  
       4 天前
    东西得在 docker 里才能用 docker 打包,不在你打进去也没用啊。看你的描述没在里面
    Vraw5
        7
    Vraw5  
       4 天前   ❤️ 3
    dd 拷整个硬盘过去
    sampeng
        8
    sampeng  
       4 天前
    把新服务器搬出来装好再放回去。。。
    k9982874
        9
    k9982874  
       4 天前 via Android
    7 楼正解,硬件差别不大直接 dd 过去,改 boot loader 完事
    ugpu
        10
    ugpu  
       4 天前
    除非可以克隆硬盘, 或者镜像.
    不然就写脚本重新部署 & 找个脚本打印所有系统环境安装的版本信息? github 找找?

    这种所谓的 手动“迁移” 到最后 你会发现莫名其妙的启不来 & 少了 lib & lib 版本对不上
    momocraft
        11
    momocraft  
       4 天前   ❤️ 1
    写个 Dockerfile ,在 docker build 时把需要下载的东西全部下载好
    docker export 成文件
    在内网机器 docker import 那个文件
    riazjack218
        12
    riazjack218  
       4 天前
    如果有群辉的话,可以尝试下群辉的系统备份
    mgrddsj
        13
    mgrddsj  
       4 天前
    Conda 环境可以通过 `conda info -e` 找到位置。
    Transformer 等模型如果是通过 Hugging Face 下载的话,那应该会在 `~/.cache/huggingface/` 目录下,这玩意估计挺容易忽略的。
    以及由于数据通常都比较大,推荐用 ncdu 命令(或单纯的 du )找到大文件的位置,并迁移。
    其它的就只有搬完之后试试才知道了。
    gaobh
        14
    gaobh  
       4 天前
    整盘做个镜像,然后镜像恢复呢
    paopjian
        15
    paopjian  
       4 天前
    除了 cuda 驱动问题,其他一切都不是问题,恶心的只有环境问题, 省事的方法就是模拟新机器环境,先用 pip 把包都下好,再压缩放到新机器里
    rjagge
        16
    rjagge  
    OP
       4 天前
    @Vraw5
    @k9982874 这个我考虑过, 目标服务器是一个集群, 不是我们单独拥有的, 不知道能不能这样搞- -
    Vraw5
        17
    Vraw5  
       4 天前
    @rjagge #16 开多方会议,确定能不能行。如果不 dd 的话,先把旧的数据 rsync 到临时硬盘,需要的镜像啥的都弄进去,临时硬盘插新机器上,新机器做新部署,需要啥东西就从临时硬盘 rsync
    Hengtang
        18
    Hengtang  
       4 天前
    conda 好说,包默认都在 conda 目录下面,pip 的包也相对集中。

    如果只是这俩安装的依赖倒还简单,直接复制就行,然后把模型的目录拷一下,一般是.cache 。

    但是如果有其它依赖比如 apt 那就不好弄了,基本得重装或者磁盘拷贝。

    dd 整机备份就行,服务器集群无非就是还原到虚拟盘的事情。
    ```shell
    dd status=progress if=/dev/sda | gzip > /mnt/mounted_drive/backup.gz
    ```
    Vraw5
        19
    Vraw5  
       4 天前
    @Vraw5 #17 另外一个方法就是新机器硬盘拿出来,找个其他联网机器做环境,然后插回去(有无引入安全隐患靠自己判断)
    coefuqin
        20
    coefuqin  
       4 天前
    https://docs.vmware.com/en/vCenter-Converter-Standalone/index.html 可以试试这个工具。新的机器虚拟化更好。
    coefuqin
        21
    coefuqin  
       4 天前
    VMware 这种工业级的东西,应该还是靠谱的。
    pagxir
        22
    pagxir  
       4 天前 via Android
    @rjagge #3 因为他不会。直接整个系统打包过去就好了,你可以用 lxc/lxd/docker/libvirt-lxc 运行老的环境,如果需要安装新系统但是不想重新配置老环境的话。
    mazyi
        23
    mazyi  
       4 天前
    换硬盘
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1941 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 16:25 · PVG 00:25 · LAX 08:25 · JFK 11:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.