教你顺利下载Huggingface上的大模型文件

:::
👉 原文链接:mp.weixin.qq…

🕑 **闪存时间:**2025-04-25 17:46:56

❤️️ 本文由钉钉文档闪存一键生成
:::

在这个全民AI的时代,很多网友都想捣鼓一下大模型,要玩大模型,有时候需要本地部署,而本地部署则需要下载大模型文件,由于众所周知的原因,国内无法直接访问Huggingface网站,大家一般用的是镜像站https://hf-mirror.com

但是如果用Huggingface官方的下载工具从镜像站下载大模型,则很不稳定,经常中断,要反复很多次才能下载好,为了解决这个问题,我编写了一个shell脚本,保证能完整下载大模型文件,哪怕是满血版的deepseek R1(高达720GB)也没问题,只要带宽不是很慢,差不多一个晚上能下载好。

在这里插入图片描述

下图是我之前下载的经过Q4量化的deepseek R1,总共接近400GB,睡个觉就下载完了

在这里插入图片描述

脚本的逻辑很简单,就是检测huggingface-cli退出代码,如果不是正常退出的,说明报错了,那就自动重新开始下载模型文件,直到下载完成为止。

接下来讲如何操作(本篇文章以ubuntu server 24.04系统为例,本脚本只支持Linux系统):

首先需要安装python和huggingface-cli:

sudo apt updatesudo apt install python3 -y

#验证安装

python3 --version

#安装包管理工具

sudo apt install python3-pip -y

python3 -m venv huggingface

创建虚拟环境

source huggingface/bin/activate

激活环境

pip install -U huggingface_hub

#安装huggingface-cli工具

export HF_ENDPOINT=https://hf-mirror.com

然后就可以准备开始下载了,下载之前,还要给脚本文件授予执行权限

chmod +x download_huggingface_models.sh

现在就可以开始用脚本下载Huggingface上任意一个大模型了,这里以下载microsoft/Phi-4-mini-instruct大模型为例,其实这是个小模型,总共不超过10GB

在这里插入图片描述

运行脚本,加上一个参数即可,这个参数就是Huggingface网站上模型的id

./download_huggingface_models.sh microsoft/Phi-4-mini-instruct

输出如下,可以看到快得飞起,默认情况下,可同时下载8个文件

在这里插入图片描述

如果下载出错了,比如网络不稳定等原因造成中断,脚本会自动重新开始下载,而且是断电续传。

下载完成后,如果不想继续在python虚拟环境了,可以输入这个命令回到之前的shell

deactive

以下是shell脚本代码:

#!/usr/bin/bash
# Script to download Hugging Face models with automatic retry functionality
# Usage: ./download_huggingface_models.sh <model_name>
# Example: ./download_huggingface_models.sh deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B
# Set environment variables for Hugging Face
export HF_ENDPOINT="https://hf-mirror.com"
export HF_HUB_DOWNLOAD_TIMEOUT=18000
# Function to display usage information
show_usage() {
    echo "Usage: $0 <model_name>"
    echo "Example: $0 deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B"
    exit 1
}
# Check if model name is provided
if [ $# -ne 1 ]; then
    show_usage
fi
MODEL_NAME=$1
echo "Starting download of model: $MODEL_NAME"
# Function to download the model
download_model() {
    huggingface-cli download --resume-download "$MODEL_NAME"
    return $?
}
# Main download loop with retry functionality
while true; do
    echo "Attempting to download $MODEL_NAME..."
    
    if download_model; then
        echo "Download completed successfully!"
        break
    else
        echo "Download failed. Retrying in 5 seconds..."
        sleep 5
    fi
done
echo "Model download process finished."
Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐