快速下载大模型的方法

现在,每天都有各种大模型不断涌现,这些模型文件通常都很大。如何快速又靠谱地下载这些开源大模型,放到我们的环境中,进行后续的微调、量化和部署工作呢?以下是我的一些经验分享。

准备 Docker 基础环境

首先,从 Docker Hub 拉取一个精简版的 Python 镜像,

docker pull python:3.10-slim

然后,创建并运行容器,这里有两种方法,一种是启动一个临时容器,将当前工作目录挂载到容器的 /models 目录,并启动 bash 会话。

docker run --rm -it -v `pwd`:/models python:3.10-slim bash

另一种是后台运行容器,适合下载模型时间比较长的场景,启动一个名为 downloader 的容器,将当前工作目录挂载到容器的 /models 目录,并在后台运行 tail -f /etc/hosts 命令以保持容器运行。

docker run -d --name=downloader -v `pwd`:/models python:3.10-slim tail -f /etc/hosts

接着进入后台运行中的 downloader 容器,更换镜像源,加速下载。

docker exec -it downloader bash
sed -i 's/snapshot.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list.d/debian.sources
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

最后,别忘记进入工作目录 /models ,开始后续的大模型下载。

cd /models

Hugging Face 社区模型的下载

官方 CLI 程序 Huggingface Hub

首先,在上面的 Docker 容器环境中安装官方 CLI 工具,

pip install huggingface_hub[cli]

我们以通义千问的 Qwen2-7B 为例,来看看这个工具的使用。

Qwen2-7B 的 Hugging Face 网址是 https://huggingface.co/Qwen/Qwen2-7B ,将网址中的“组织和项目名”复制出来,然后拼在命令中就能够开始模型的下载了。

huggingface-cli download Qwen/Qwen2-7B

但是,使用默认命令来下载会将下载的模型保存在你的根目录的缓存文件夹中,并且会使用 Git Blob 来保存模型文件,存储空间比直接下载模型要大不少。

所以我们可以添加一些额外参数,来完成更高效率的下载,

huggingface-cli download Qwen/Qwen2-7B --local-dir=./models/ --cache-dir=./cache --local-dir-use-symlinks=False --resume-download

在上面的命令中,我将模型下载的目标目录和下载缓存目录设置到当前目录下, --local-dir-use-symlinks=False 表示我们下载的文件,不使用符号链接来指向缓存目录中的文件,而是保存到本地目录,方便后续上传到服务器。 --resume-download 选项启用断点续传,如果之前下载过程因某种原因中断,将尝试从中断点继续下载。

如果你只想下载指定的文件,可以用以下命令,

# 下载 Qwen/Qwen2-7B/model-00001-of-00004.safetensors
huggingface-cli download Qwen/Qwen2-7B model-00001-of-00004.safetensors --local-dir=./models/ --cache-dir=./cache --local-dir-use-symlinks=False --resume-download

如果我们需要下载在 Hugging Face 上需要申请许可或付费才能使用的模型,可以在上述命令的最后添加一个 token 参数:

huggingface-cli download Qwen/Qwen2-7B --local-dir=./models/ --cache-dir=./cache --local-dir-use-symlinks=False --resume-download --token YOUR_TOKEN_HERE

新工具 HF Transfer

首先,安装 HF Transfer ,

pip install huggingface_hub[cli] hf_transfer

来看看新版工具 HF Transfer 的使用,

HF_HUB_ENABLE_HF_TRANSFER=1 huggingface-cli download Qwen/Qwen2-7B --local-dir=./models/ --cache-dir=./cache --local-dir-use-symlinks=False

新的 HF Transfer 工具旨在加快从 Hugging Face Hub 下载和上传文件的过程,特别是在高带宽场景中有益。但是,它目前不支持 --resume-download 选项。如果下载中断,该工具无法从中断处恢复,而是会退回到 huggingface_hub 提供的常规下载方法。这意味着你需要删除所有不完整的文件并从头开始重新下载,以确保下载完整且正确。

社区爱好者的下载加速器 HF Mirror

搭配社区爱好者提供的镜像,可以加速模型的下载,我们只需要在上面的下载命令前面加上一个环境变量就行啦:

HF_ENDPOINT=https://hf-mirror.com huggingface-cli download Qwen/Qwen2-7B --local-dir=./models/ --cache-dir=./cache --local-dir-use-symlinks=False --resume-download

ModelScope 魔搭社区模型的下载

ModelScope 有类似 Hugging Face Hub CLI 的工具,开源在 GitHub 上 https://github.com/modelscope/modelscope ,有类似的功能:支持上传和下载模型。

想要使用魔搭社区的模型,同样需要先完成工具的安装,

pip install modelscope

如果只安装 ModelScope 的核心框架,下载模型时会提示缺少依赖。

它提供了 CLI 下载工具,我们使用 ModelScope 下载上文同款模型 Qwen2-7B :

modelscope download --model 'Qwen/Qwen2-7B' --include '*.json' --local_dir './local_dir' --cache_dir './cache_dir'

其中, --include 过滤指定文件, cache_dirlocal_dir 同时指定, local_dir 优先级高, cache_dir 将被忽略,模型文件将被下载在 ./local_dir

它也提供了调用 Python 代码来下载的方式,

from modelscope import snapshot_download
snapshot_download('qwen/Qwen2-7B', cache_dir="./models/")

以上是我的一些经验,希望对喜欢折腾模型的你有帮助,大家下载大模型都很快。


微信公众号「padluo」,分享数据科学家的自我修养,既然遇见,不如一起成长。关注【老罗说AI】公众号,后台回复【文章】,获得整理好的【老罗说AI】文章全集。

数据分析二维码.gif

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值