Skip to content

Instantly share code, notes, and snippets.

@padeoe
Last active February 27, 2025 16:25
Show Gist options
  • Save padeoe/697678ab8e528b85a2a7bddafea1fa4f to your computer and use it in GitHub Desktop.
Save padeoe/697678ab8e528b85a2a7bddafea1fa4f to your computer and use it in GitHub Desktop.
CLI-Tool for download Huggingface models and datasets with aria2/wget: hfd

🤗Huggingface Model Downloader

Note

(2025-01-08) Add feature for 🏷️Tag(Revision) Selection, contributed by @Bamboo-D.
(2024-12-17) Add feature for ⚡Quick Startup and ⏭️Fast Resume, enabling skipping of downloaded files, while removing the git clone dependency to accelerate file list retrieval.

Considering the lack of multi-threaded download support in the official huggingface-cli, and the inadequate error handling in hf_transfer, This command-line tool leverages curl and aria2c for fast and robust downloading of models and datasets.

Features

  • ⏯️ Resume from breakpoint: You can re-run it or Ctrl+C anytime.
  • 🚀 Multi-threaded Download: Utilize multiple threads to speed up the download process.
  • 🚫 File Exclusion: Use --exclude or --include to skip or specify files, save time for models with duplicate formats (e.g., *.bin or *.safetensors).
  • 🔐 Auth Support: For gated models that require Huggingface login, use --hf_username and --hf_token to authenticate.
  • 🪞 Mirror Site Support: Set up with HF_ENDPOINT environment variable.
  • 🌍 Proxy Support: Set up with https_proxy environment variable.
  • 📦 Simple: Minimal dependencies, requires only curl and wget, while aria2 and jq are optional for better performance.
  • 🏷️ Tag Selection: Support downloading specific model/dataset revision using --revision.

Usage

First, Download hfd.sh or clone this repo, and then grant execution permission to the script.

chmod a+x hfd.sh

you can create an alias for convenience

alias hfd="$PWD/hfd.sh"

Usage Instructions

$ ./hfd.sh --help
Usage:
  hfd <REPO_ID> [--include include_pattern1 include_pattern2 ...] [--exclude exclude_pattern1 exclude_pattern2 ...] [--hf_username username] [--hf_token token] [--tool aria2c|wget] [-x threads] [-j jobs] [--dataset] [--local-dir path] [--revision rev]

Description:
  Downloads a model or dataset from Hugging Face using the provided repo ID.

Arguments:
  REPO_ID         The Hugging Face repo ID (Required)
                  Format: 'org_name/repo_name' or legacy format (e.g., gpt2)
Options:
  include/exclude_pattern The patterns to match against file path, supports wildcard characters.
                  e.g., '--exclude *.safetensor *.md', '--include vae/*'.
  --include       (Optional) Patterns to include files for downloading (supports multiple patterns).
  --exclude       (Optional) Patterns to exclude files from downloading (supports multiple patterns).
  --hf_username   (Optional) Hugging Face username for authentication (not email).
  --hf_token      (Optional) Hugging Face token for authentication.
  --tool          (Optional) Download tool to use: aria2c (default) or wget.
  -x              (Optional) Number of download threads for aria2c (default: 4).
  -j              (Optional) Number of concurrent downloads for aria2c (default: 5).
  --dataset       (Optional) Flag to indicate downloading a dataset.
  --local-dir     (Optional) Directory path to store the downloaded data.
                             Defaults to the current directory with a subdirectory named 'repo_name'
                             if REPO_ID is is composed of 'org_name/repo_name'.
  --revision      (Optional) Model/Dataset revision to download (default: main).

Example:
  hfd gpt2
  hfd bigscience/bloom-560m --exclude *.bin *.msgpack onnx/*
  hfd meta-llama/Llama-2-7b --hf_username myuser --hf_token mytoken -x 4
  hfd lavita/medical-qa-shared-task-v1-toy --dataset
  hfd bartowski/Phi-3.5-mini-instruct-exl2 --revision 5_0

Download a model

hfd bigscience/bloom-560m

Download a model need login

Get huggingface token from https://huggingface.co/settings/tokens, then

hfd meta-llama/Llama-2-7b --hf_username YOUR_HF_USERNAME_NOT_EMAIL --hf_token YOUR_HF_TOKEN

Download a model and exclude certain files (e.g., .safetensors)

hfd bigscience/bloom-560m --exclude *.bin *.msgpack onnx/*

You can also exclude multiple pattern like that

hfd bigscience/bloom-560m --exclude *.bin --exclude *.msgpack --exclude onnx/*

Download specific files using include patterns

hfd Qwen/Qwen2.5-Coder-32B-Instruct-GGUF --include *q2_k*.gguf

Download a dataset

hfd lavita/medical-qa-shared-task-v1-toy --dataset

Download a specific revision of a model

hfd bartowski/Phi-3.5-mini-instruct-exl2 --revision 5_0

Multi-threading and Parallel Downloads

The script supports two types of parallelism when using aria2c:

  • Threads per File (-x): Controls connections per file, usage: hfd gpt2 -x 8, recommended: 4-8, default: 4 threads.

  • Concurrent Files (-j): Controls simultaneous file downloads, usage: hfd gpt2 -j 3, recommended: 3-8, default: 5 files.

Combined usage:

hfd gpt2 -x 8 -j 3  # 8 threads per file, 3 files at once
#!/usr/bin/env bash
# Color definitions
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m' # No Color
trap 'printf "${YELLOW}\nDownload interrupted. You can resume by re-running the command.\n${NC}"; exit 1' INT
display_help() {
cat << EOF
Usage:
hfd <REPO_ID> [--include include_pattern1 include_pattern2 ...] [--exclude exclude_pattern1 exclude_pattern2 ...] [--hf_username username] [--hf_token token] [--tool aria2c|wget] [-x threads] [-j jobs] [--dataset] [--local-dir path] [--revision rev]
Description:
Downloads a model or dataset from Hugging Face using the provided repo ID.
Arguments:
REPO_ID The Hugging Face repo ID (Required)
Format: 'org_name/repo_name' or legacy format (e.g., gpt2)
Options:
include/exclude_pattern The patterns to match against file path, supports wildcard characters.
e.g., '--exclude *.safetensor *.md', '--include vae/*'.
--include (Optional) Patterns to include files for downloading (supports multiple patterns).
--exclude (Optional) Patterns to exclude files from downloading (supports multiple patterns).
--hf_username (Optional) Hugging Face username for authentication (not email).
--hf_token (Optional) Hugging Face token for authentication.
--tool (Optional) Download tool to use: aria2c (default) or wget.
-x (Optional) Number of download threads for aria2c (default: 4).
-j (Optional) Number of concurrent downloads for aria2c (default: 5).
--dataset (Optional) Flag to indicate downloading a dataset.
--local-dir (Optional) Directory path to store the downloaded data.
Defaults to the current directory with a subdirectory named 'repo_name'
if REPO_ID is is composed of 'org_name/repo_name'.
--revision (Optional) Model/Dataset revision to download (default: main).
Example:
hfd gpt2
hfd bigscience/bloom-560m --exclude *.safetensors
hfd meta-llama/Llama-2-7b --hf_username myuser --hf_token mytoken -x 4
hfd lavita/medical-qa-shared-task-v1-toy --dataset
hfd bartowski/Phi-3.5-mini-instruct-exl2 --revision 5_0
EOF
exit 1
}
[[ -z "$1" || "$1" =~ ^-h || "$1" =~ ^--help ]] && display_help
REPO_ID=$1
shift
# Default values
TOOL="aria2c"
THREADS=4
CONCURRENT=5
HF_ENDPOINT=${HF_ENDPOINT:-"https://huggingface.co"}
INCLUDE_PATTERNS=()
EXCLUDE_PATTERNS=()
REVISION="main"
validate_number() {
[[ "$2" =~ ^[1-9][0-9]*$ && "$2" -le "$3" ]] || { printf "${RED}[Error] $1 must be 1-$3${NC}\n"; exit 1; }
}
# Argument parsing
while [[ $# -gt 0 ]]; do
case $1 in
--include) shift; while [[ $# -gt 0 && ! ($1 =~ ^--) && ! ($1 =~ ^-[^-]) ]]; do INCLUDE_PATTERNS+=("$1"); shift; done ;;
--exclude) shift; while [[ $# -gt 0 && ! ($1 =~ ^--) && ! ($1 =~ ^-[^-]) ]]; do EXCLUDE_PATTERNS+=("$1"); shift; done ;;
--hf_username) HF_USERNAME="$2"; shift 2 ;;
--hf_token) HF_TOKEN="$2"; shift 2 ;;
--tool)
case $2 in
aria2c|wget)
TOOL="$2"
;;
*)
printf "%b[Error] Invalid tool. Use 'aria2c' or 'wget'.%b\n" "$RED" "$NC"
exit 1
;;
esac
shift 2
;;
-x) validate_number "threads (-x)" "$2" 10; THREADS="$2"; shift 2 ;;
-j) validate_number "concurrent downloads (-j)" "$2" 10; CONCURRENT="$2"; shift 2 ;;
--dataset) DATASET=1; shift ;;
--local-dir) LOCAL_DIR="$2"; shift 2 ;;
--revision) REVISION="$2"; shift 2 ;;
*) display_help ;;
esac
done
# Generate current command string
generate_command_string() {
local cmd_string="REPO_ID=$REPO_ID"
cmd_string+=" TOOL=$TOOL"
cmd_string+=" INCLUDE_PATTERNS=${INCLUDE_PATTERNS[*]}"
cmd_string+=" EXCLUDE_PATTERNS=${EXCLUDE_PATTERNS[*]}"
cmd_string+=" DATASET=${DATASET:-0}"
cmd_string+=" HF_USERNAME=${HF_USERNAME:-}"
cmd_string+=" HF_TOKEN=${HF_TOKEN:-}"
cmd_string+=" HF_TOKEN=${HF_ENDPOINT:-}"
cmd_string+=" REVISION=$REVISION"
echo "$cmd_string"
}
# Check if aria2, wget, curl are installed
check_command() {
if ! command -v $1 &>/dev/null; then
printf "%b%s is not installed. Please install it first.%b\n" "$RED" "$1" "$NC"
exit 1
fi
}
check_command curl; check_command "$TOOL"
LOCAL_DIR="${LOCAL_DIR:-${REPO_ID#*/}}"
mkdir -p "$LOCAL_DIR/.hfd"
if [[ "$DATASET" == 1 ]]; then
METADATA_API_PATH="datasets/$REPO_ID"
DOWNLOAD_API_PATH="datasets/$REPO_ID"
CUT_DIRS=5
else
METADATA_API_PATH="models/$REPO_ID"
DOWNLOAD_API_PATH="$REPO_ID"
CUT_DIRS=4
fi
# Modify API URL, construct based on revision
if [[ "$REVISION" != "main" ]]; then
METADATA_API_PATH="$METADATA_API_PATH/revision/$REVISION"
fi
API_URL="$HF_ENDPOINT/api/$METADATA_API_PATH"
METADATA_FILE="$LOCAL_DIR/.hfd/repo_metadata.json"
# Fetch and save metadata
fetch_and_save_metadata() {
status_code=$(curl -L -s -w "%{http_code}" -o "$METADATA_FILE" ${HF_TOKEN:+-H "Authorization: Bearer $HF_TOKEN"} "$API_URL")
RESPONSE=$(cat "$METADATA_FILE")
if [ "$status_code" -eq 200 ]; then
printf "%s\n" "$RESPONSE"
else
printf "%b[Error] Failed to fetch metadata from $API_URL. HTTP status code: $status_code.%b\n$RESPONSE\n" "${RED}" "${NC}" >&2
rm $METADATA_FILE
exit 1
fi
}
check_authentication() {
local response="$1"
if command -v jq &>/dev/null; then
local gated
gated=$(echo "$response" | jq -r '.gated // false')
if [[ "$gated" != "false" && ( -z "$HF_TOKEN" || -z "$HF_USERNAME" ) ]]; then
printf "${RED}The repository requires authentication, but --hf_username and --hf_token is not passed. Please get token from https://huggingface.co/settings/tokens.\nExiting.\n${NC}"
exit 1
fi
else
if echo "$response" | grep -q '"gated":[^f]' && [[ -z "$HF_TOKEN" || -z "$HF_USERNAME" ]]; then
printf "${RED}The repository requires authentication, but --hf_username and --hf_token is not passed. Please get token from https://huggingface.co/settings/tokens.\nExiting.\n${NC}"
exit 1
fi
fi
}
if [[ ! -f "$METADATA_FILE" ]]; then
printf "%bFetching repo metadata...%b\n" "$YELLOW" "$NC"
RESPONSE=$(fetch_and_save_metadata) || exit 1
check_authentication "$RESPONSE"
else
printf "%bUsing cached metadata: $METADATA_FILE%b\n" "$GREEN" "$NC"
RESPONSE=$(cat "$METADATA_FILE")
check_authentication "$RESPONSE"
fi
should_regenerate_filelist() {
local command_file="$LOCAL_DIR/.hfd/last_download_command"
local current_command=$(generate_command_string)
# If file list doesn't exist, regenerate
if [[ ! -f "$LOCAL_DIR/$fileslist_file" ]]; then
echo "$current_command" > "$command_file"
return 0
fi
# If command file doesn't exist, regenerate
if [[ ! -f "$command_file" ]]; then
echo "$current_command" > "$command_file"
return 0
fi
# Compare current command with saved command
local saved_command=$(cat "$command_file")
if [[ "$current_command" != "$saved_command" ]]; then
echo "$current_command" > "$command_file"
return 0
fi
return 1
}
fileslist_file=".hfd/${TOOL}_urls.txt"
if should_regenerate_filelist; then
# Remove existing file list if it exists
[[ -f "$LOCAL_DIR/$fileslist_file" ]] && rm "$LOCAL_DIR/$fileslist_file"
printf "%bGenerating file list...%b\n" "$YELLOW" "$NC"
# Convert include and exclude patterns to regex
INCLUDE_REGEX=""
EXCLUDE_REGEX=""
if ((${#INCLUDE_PATTERNS[@]})); then
INCLUDE_REGEX=$(printf '%s\n' "${INCLUDE_PATTERNS[@]}" | sed 's/\./\\./g; s/\*/.*/g' | paste -sd '|' -)
fi
if ((${#EXCLUDE_PATTERNS[@]})); then
EXCLUDE_REGEX=$(printf '%s\n' "${EXCLUDE_PATTERNS[@]}" | sed 's/\./\\./g; s/\*/.*/g' | paste -sd '|' -)
fi
# Check if jq is available
if command -v jq &>/dev/null; then
process_with_jq() {
if [[ "$TOOL" == "aria2c" ]]; then
printf "%s" "$RESPONSE" | jq -r \
--arg endpoint "$HF_ENDPOINT" \
--arg repo_id "$DOWNLOAD_API_PATH" \
--arg token "$HF_TOKEN" \
--arg include_regex "$INCLUDE_REGEX" \
--arg exclude_regex "$EXCLUDE_REGEX" \
--arg revision "$REVISION" \
'
.siblings[]
| select(
.rfilename != null
and ($include_regex == "" or (.rfilename | test($include_regex)))
and ($exclude_regex == "" or (.rfilename | test($exclude_regex) | not))
)
| [
($endpoint + "/" + $repo_id + "/resolve/" + $revision + "/" + .rfilename),
" dir=" + (.rfilename | split("/")[:-1] | join("/")),
" out=" + (.rfilename | split("/")[-1]),
if $token != "" then " header=Authorization: Bearer " + $token else empty end,
""
]
| join("\n")
'
else
printf "%s" "$RESPONSE" | jq -r \
--arg endpoint "$HF_ENDPOINT" \
--arg repo_id "$DOWNLOAD_API_PATH" \
--arg include_regex "$INCLUDE_REGEX" \
--arg exclude_regex "$EXCLUDE_REGEX" \
--arg revision "$REVISION" \
'
.siblings[]
| select(
.rfilename != null
and ($include_regex == "" or (.rfilename | test($include_regex)))
and ($exclude_regex == "" or (.rfilename | test($exclude_regex) | not))
)
| ($endpoint + "/" + $repo_id + "/resolve/" + $revision + "/" + .rfilename)
'
fi
}
result=$(process_with_jq)
printf "%s\n" "$result" > "$LOCAL_DIR/$fileslist_file"
else
printf "%b[Warning] jq not installed, using grep/awk for metadata json parsing (slower). Consider installing jq for better parsing performance.%b\n" "$YELLOW" "$NC"
process_with_grep_awk() {
local include_pattern=""
local exclude_pattern=""
local output=""
if ((${#INCLUDE_PATTERNS[@]})); then
include_pattern=$(printf '%s\n' "${INCLUDE_PATTERNS[@]}" | sed 's/\./\\./g; s/\*/.*/g' | paste -sd '|' -)
fi
if ((${#EXCLUDE_PATTERNS[@]})); then
exclude_pattern=$(printf '%s\n' "${EXCLUDE_PATTERNS[@]}" | sed 's/\./\\./g; s/\*/.*/g' | paste -sd '|' -)
fi
local files=$(printf '%s' "$RESPONSE" | grep -o '"rfilename":"[^"]*"' | awk -F'"' '{print $4}')
if [[ -n "$include_pattern" ]]; then
files=$(printf '%s\n' "$files" | grep -E "$include_pattern")
fi
if [[ -n "$exclude_pattern" ]]; then
files=$(printf '%s\n' "$files" | grep -vE "$exclude_pattern")
fi
while IFS= read -r file; do
if [[ -n "$file" ]]; then
if [[ "$TOOL" == "aria2c" ]]; then
output+="$HF_ENDPOINT/$DOWNLOAD_API_PATH/resolve/$REVISION/$file"$'\n'
output+=" dir=$(dirname "$file")"$'\n'
output+=" out=$(basename "$file")"$'\n'
[[ -n "$HF_TOKEN" ]] && output+=" header=Authorization: Bearer $HF_TOKEN"$'\n'
output+=$'\n'
else
output+="$HF_ENDPOINT/$DOWNLOAD_API_PATH/resolve/$REVISION/$file"$'\n'
fi
fi
done <<< "$files"
printf '%s' "$output"
}
result=$(process_with_grep_awk)
printf "%s\n" "$result" > "$LOCAL_DIR/$fileslist_file"
fi
else
printf "%bResume from file list: $LOCAL_DIR/$fileslist_file%b\n" "$GREEN" "$NC"
fi
# Perform download
printf "${YELLOW}Starting download with $TOOL to $LOCAL_DIR...\n${NC}"
cd "$LOCAL_DIR"
if [[ "$TOOL" == "aria2c" ]]; then
aria2c --console-log-level=error --file-allocation=none -x "$THREADS" -j "$CONCURRENT" -s "$THREADS" -k 1M -c -i "$fileslist_file" --save-session="$fileslist_file"
elif [[ "$TOOL" == "wget" ]]; then
wget -x -nH --cut-dirs="$CUT_DIRS" ${HF_TOKEN:+--header="Authorization: Bearer $HF_TOKEN"} --input-file="$fileslist_file" --continue
fi
if [[ $? -eq 0 ]]; then
printf "${GREEN}Download completed successfully. Repo directory: $PWD\n${NC}"
else
printf "${RED}Download encountered errors.\n${NC}"
exit 1
fi
@T-Atlas
Copy link

T-Atlas commented Aug 16, 2024

@tianbuwei @zodiacg 🎉现已支持多文件的排除或指定,用法示例

hfd facebook/opt-125m --tool wget --local-dir facebook/opt-125m --exclude flax_model.msgpack tf_model.h5

你好,脚本示例里面的排除通配符写法 --exclude *.safetensors 似乎一直都不行,无法匹配到文件,只能用文件全名

同样的问题

@ai-christianson
Copy link

Is there a way to specify the tag/branch/revision? Many repos store things like different quant levels as different branches in the repo. An example with huggingface-cli would be:

huggingface-cli download ${MODEL_ID} --revision ${MODEL_REVISION}

@haukzero
Copy link

我之前使用hfd可以正常下载,为什么现在会报这样的错,我试过重新下载hfd但似乎也并不管用

Downloading to gpt2
Testing GIT_REFS_URL: https://hf-mirror.com/gpt2/info/refs?service=git-upload-pack
Unexpected HTTP Status Code: 000
Executing debug command: curl -v https://hf-mirror.com/gpt2/info/refs?service=git-upload-pack
Output:
* Host hf-mirror.com:443 was resolved.
* IPv6: (none)
* IPv4: 153.121.57.40, 160.16.199.204, 133.242.169.68
*   Trying 153.121.57.40:443...
* Connected to hf-mirror.com (153.121.57.40) port 443
* schannel: disabled automatic use of client certificate
* using HTTP/1.x
> GET /gpt2/info/refs?service=git-upload-pack HTTP/1.1
> Host: hf-mirror.com
> User-Agent: curl/8.8.0
> Accept: */*
>
* Request completely sent off
* schannel: remote party requests renegotiation
* schannel: renegotiating SSL/TLS connection
* schannel: SSL/TLS connection renegotiated
< HTTP/1.1 200 OK
< Access-Control-Allow-Origin: https://hf-mirror.com
< Access-Control-Expose-Headers: X-Repo-Commit,X-Request-Id,X-Error-Code,X-Error-Message,X-Total-Count,ETag,Link,Accept-Ranges,Content-Range
< Alt-Svc: h3=":443"; ma=2592000
< Content-Type: application/x-git-upload-pack-advertisement
< Cross-Origin-Opener-Policy: same-origin
< Date: Thu, 12 Sep 2024 05:17:56 GMT
< Referrer-Policy: strict-origin-when-cross-origin
< Server: hf-mirror
< Vary: Origin
< Via: 1.1 746d9b263e5f72ff5dc6d5120e20f00e.cloudfront.net (CloudFront)
< X-Amz-Cf-Id: 5P8WslKSnkIpXLeQt4eXOpfG2c4uSa2-VsKpVcCoAv_otrQ4PtHvHg==
< X-Amz-Cf-Pop: NRT51-P2
< X-Cache: Miss from cloudfront
< X-Powered-By: huggingface-moon
< X-Request-Id: Root=1-66e27984-366b3db27298ceb702252a26
< Transfer-Encoding: chunked
<
Warning: Binary output can mess up your terminal. Use "--output -" to tell
Warning: curl to output it to your terminal anyway, or consider "--output
Warning: <FILE>" to save to a file.
* client returned ERROR on write of 3561 bytes
* Failed reading the chunked-encoded stream
* Closing connection
* schannel: shutting down SSL/TLS connection with hf-mirror.com port 443

Git clone failed.

@zhang-ziang
Copy link

有可能做到在下载数据集的时候暂时跳过下载失败的文件吗?我在下载一个有很多文件的数据集但是单个文件的下载失败似乎中止了整个进程

@RewindL
Copy link

RewindL commented Sep 26, 2024

有没有办法直接跳过已经下载好的文件?下数据集的时候有接近400个文件,每次中断重新下的时候都会从第一个开始request,这可能会导致中间又因为网络timeout中断。文件太多了也不太可能一个一个exclude

@padeoe
Copy link
Author

padeoe commented Sep 26, 2024

@zhang-ziang @RewindL 收到需求,我来修改下

@zbximo
Copy link

zbximo commented Oct 1, 2024

hfd gpt2 --exclude *.safetensors --tool wget
Downloading to gpt2
Testing GIT_REFS_URL: https://hf-mirror.com/gpt2/info/refs?service=git-upload-pack
GIT_LFS_SKIP_SMUDGE=1 git clone https://hf-mirror.com/gpt2 gpt2
Cloning into 'gpt2'...

为什么一直卡在这里,下载啥东西都是这样

@hl0737
Copy link

hl0737 commented Oct 9, 2024

@zhang-ziang @RewindL 收到需求,我来修改下

大佬,exclude好像失效了,麻烦帮忙看下,感谢您!

@padeoe
Copy link
Author

padeoe commented Oct 10, 2024

大佬,exclude好像失效了,麻烦帮忙看下,感谢您!

@hl0737 我测试--exclude是有效的呀:

$ ./hfd.sh openai-community/gpt2 --exclude *.safetensors --exclude 6* --exclude f* --exclude onnx/*
Downloading to gpt2
gpt2 exists, Skip Clone.
Already up to date.

Start Downloading lfs files, bash script:
cd gpt2
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/64-8bits.tflite" -d "." -o "64-8bits.tflite"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/64-fp16.tflite" -d "." -o "64-fp16.tflite"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/64.tflite" -d "." -o "64.tflite"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/flax_model.msgpack" -d "." -o "flax_model.msgpack"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/model.safetensors" -d "." -o "model.safetensors"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/onnx/decoder_model.onnx" -d "onnx" -o "decoder_model.onnx"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/onnx/decoder_model_merged.onnx" -d "onnx" -o "decoder_model_merged.onnx"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/onnx/decoder_with_past_model.onnx" -d "onnx" -o "decoder_with_past_model.onnx"
aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/pytorch_model.bin" -d "." -o "pytorch_model.bin"
aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/rust_model.ot" -d "." -o "rust_model.ot"
aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/tf_model.h5" -d "." -o "tf_model.h5"
Start downloading pytorch_model.bin.
[#1cf1e1 522MiB/522MiB(99%) CN:1 DL:35MiB]
下载结果:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
1cf1e1|OK  |    33MiB/s|./pytorch_model.bin

状态标识:
(OK): 下载完成。
Downloaded https://hf-mirror.com/openai-community/gpt2/resolve/main/pytorch_model.bin successfully.
Start downloading rust_model.ot.
[#688a39 669MiB/669MiB(99%) CN:1 DL:5.4MiB]
下载结果:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
688a39|OK  |    25MiB/s|./rust_model.ot

状态标识:
(OK): 下载完成。
Downloaded https://hf-mirror.com/openai-community/gpt2/resolve/main/rust_model.ot successfully.
Start downloading tf_model.h5.
[#c448c2 469MiB/474MiB(98%) CN:4 DL:10MiB]
下载结果:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
c448c2|OK  |    11MiB/s|./tf_model.h5

状态标识:
(OK): 下载完成。
Downloaded https://hf-mirror.com/openai-community/gpt2/resolve/main/tf_model.h5 successfully.
Download completed successfully.

如上,我设置了多个--exclude内容,所以只从 pytorch_model.bin 开始下载了。

@hl0737
Copy link

hl0737 commented Oct 10, 2024

大佬,exclude好像失效了,麻烦帮忙看下,感谢您!

@hl0737 我测试--exclude是有效的呀:

$ ./hfd.sh openai-community/gpt2 --exclude *.safetensors --exclude 6* --exclude f* --exclude onnx/*
Downloading to gpt2
gpt2 exists, Skip Clone.
Already up to date.

Start Downloading lfs files, bash script:
cd gpt2
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/64-8bits.tflite" -d "." -o "64-8bits.tflite"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/64-fp16.tflite" -d "." -o "64-fp16.tflite"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/64.tflite" -d "." -o "64.tflite"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/flax_model.msgpack" -d "." -o "flax_model.msgpack"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/model.safetensors" -d "." -o "model.safetensors"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/onnx/decoder_model.onnx" -d "onnx" -o "decoder_model.onnx"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/onnx/decoder_model_merged.onnx" -d "onnx" -o "decoder_model_merged.onnx"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/onnx/decoder_with_past_model.onnx" -d "onnx" -o "decoder_with_past_model.onnx"
aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/pytorch_model.bin" -d "." -o "pytorch_model.bin"
aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/rust_model.ot" -d "." -o "rust_model.ot"
aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/tf_model.h5" -d "." -o "tf_model.h5"
Start downloading pytorch_model.bin.
[#1cf1e1 522MiB/522MiB(99%) CN:1 DL:35MiB]
下载结果:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
1cf1e1|OK  |    33MiB/s|./pytorch_model.bin

状态标识:
(OK): 下载完成。
Downloaded https://hf-mirror.com/openai-community/gpt2/resolve/main/pytorch_model.bin successfully.
Start downloading rust_model.ot.
[#688a39 669MiB/669MiB(99%) CN:1 DL:5.4MiB]
下载结果:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
688a39|OK  |    25MiB/s|./rust_model.ot

状态标识:
(OK): 下载完成。
Downloaded https://hf-mirror.com/openai-community/gpt2/resolve/main/rust_model.ot successfully.
Start downloading tf_model.h5.
[#c448c2 469MiB/474MiB(98%) CN:4 DL:10MiB]
下载结果:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
c448c2|OK  |    11MiB/s|./tf_model.h5

状态标识:
(OK): 下载完成。
Downloaded https://hf-mirror.com/openai-community/gpt2/resolve/main/tf_model.h5 successfully.
Download completed successfully.

如上,我设置了多个--exclude内容,所以只从 pytorch_model.bin 开始下载了。

@padeoe 嗯嗯,我昨天试了下ok的,有一次试不行,可能是我的通配符写错了,比如不想下一个文件夹dir,只写了dir/,而不是dir/*,maybe,没有试

感谢您的回复哈!

PS:datasets下载数据集的问题麻烦大佬加急看下!,现在datasets已经更新到3的大版本了,但是 > 2.14.6的版本还是有问题,谢谢您!❤️❤️

@Yancy456
Copy link

Yancy456 commented Nov 5, 2024

太天才了我操,改天帮你写一个python版本的,这个bash版本实在不好维护

@Yancy456
Copy link

Yancy456 commented Nov 5, 2024

Downloading to /home/zhengxiao/dataroot/models/Llama2_7b_chat_hf/ Testing GIT_REFS_URL: https://hf-mirror.com/meta-llama/Llama-2-7b-chat-hf/info/refs?service=git-upload-pack git clone https://zhengxiao:[email protected]/meta-llama/Llama-2-7b-chat-hf /home/zhengxiao/dataroot/models/Llama2_7b_chat_hf/ fatal: destination path '/home/zhengxiao/dataroot/models/Llama2_7b_chat_hf' already exists and is not an empty directory. Git clone failed. 显示目录已存在,请问如何解决?

换个位置

@Bamboo-D
Copy link

Is there a way to specify the tag/branch/revision? Many repos store things like different quant levels as different branches in the repo. An example with huggingface-cli would be:

huggingface-cli download ${MODEL_ID} --revision ${MODEL_REVISION}

下载模型指定版本的需求我也遇到了,于是我小改了一点加了这个功能。
https://gist.github.com/Bamboo-D/8875a46c8d201af221b631f1936f6fff

@padeoe
Copy link
Author

padeoe commented Dec 25, 2024

Is there a way to specify the tag/branch/revision? Many repos store things like different quant levels as different branches in the repo. An example with huggingface-cli would be:

huggingface-cli download ${MODEL_ID} --revision ${MODEL_REVISION}

下载模型指定版本的需求我也遇到了,于是我小改了一点加了这个功能。 https://gist.github.com/Bamboo-D/8875a46c8d201af221b631f1936f6fff

@Bamboo-D 感谢我手动merge进来

@ChaojuWang
Copy link

大佬,exclude好像失效了,麻烦帮忙看下,感谢您!

@hl0737 我测试--exclude是有效的呀:

$ ./hfd.sh openai-community/gpt2 --exclude *.safetensors --exclude 6* --exclude f* --exclude onnx/*
Downloading to gpt2
gpt2 exists, Skip Clone.
Already up to date.

Start Downloading lfs files, bash script:
cd gpt2
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/64-8bits.tflite" -d "." -o "64-8bits.tflite"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/64-fp16.tflite" -d "." -o "64-fp16.tflite"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/64.tflite" -d "." -o "64.tflite"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/flax_model.msgpack" -d "." -o "flax_model.msgpack"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/model.safetensors" -d "." -o "model.safetensors"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/onnx/decoder_model.onnx" -d "onnx" -o "decoder_model.onnx"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/onnx/decoder_model_merged.onnx" -d "onnx" -o "decoder_model_merged.onnx"
# aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/onnx/decoder_with_past_model.onnx" -d "onnx" -o "decoder_with_past_model.onnx"
aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/pytorch_model.bin" -d "." -o "pytorch_model.bin"
aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/rust_model.ot" -d "." -o "rust_model.ot"
aria2c --console-log-level=error --file-allocation=none -x 4 -s 4 -k 1M -c "https://hf-mirror.com/openai-community/gpt2/resolve/main/tf_model.h5" -d "." -o "tf_model.h5"
Start downloading pytorch_model.bin.
[#1cf1e1 522MiB/522MiB(99%) CN:1 DL:35MiB]
下载结果:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
1cf1e1|OK  |    33MiB/s|./pytorch_model.bin

状态标识:
(OK): 下载完成。
Downloaded https://hf-mirror.com/openai-community/gpt2/resolve/main/pytorch_model.bin successfully.
Start downloading rust_model.ot.
[#688a39 669MiB/669MiB(99%) CN:1 DL:5.4MiB]
下载结果:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
688a39|OK  |    25MiB/s|./rust_model.ot

状态标识:
(OK): 下载完成。
Downloaded https://hf-mirror.com/openai-community/gpt2/resolve/main/rust_model.ot successfully.
Start downloading tf_model.h5.
[#c448c2 469MiB/474MiB(98%) CN:4 DL:10MiB]
下载结果:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
c448c2|OK  |    11MiB/s|./tf_model.h5

状态标识:
(OK): 下载完成。
Downloaded https://hf-mirror.com/openai-community/gpt2/resolve/main/tf_model.h5 successfully.
Download completed successfully.

如上,我设置了多个--exclude内容,所以只从 pytorch_model.bin 开始下载了。

image
这里写的有问题,--exclude--exclude参数后面如果跟-开头的参数,比如-x或者-j,就会导致短横线参数也被算作匹配条件的一部分

@padeoe
Copy link
Author

padeoe commented Jan 8, 2025

@Arrebol2020
Copy link

@ubuntu:~/dev$ ./hfd.sh meta-llama/Llama-2-7b --hf_username xx--hf_token xxx--tool wget
Fetching repo metadata...
cat: Llama-2-7b/.hfd/repo_metadata.json: No such file or directory
[Error] Failed to fetch metadata from https://hf-mirror.com/api/models/meta-llama/Llama-2-7b. HTTP status code: 000.

rm: cannot remove 'Llama-2-7b/.hfd/repo_metadata.json': No such file or directory
为啥设置了镜像还是不行

@chinesezyc
Copy link

@ubuntu:~/dev$ ./hfd.sh meta-llama/Llama-2-7b --hf_username xx--hf_token xxx--tool wget Fetching repo metadata... cat: Llama-2-7b/.hfd/repo_metadata.json: No such file or directory [Error] Failed to fetch metadata from https://hf-mirror.com/api/models/meta-llama/Llama-2-7b. HTTP status code: 000.

rm: cannot remove 'Llama-2-7b/.hfd/repo_metadata.json': No such file or directory 为啥设置了镜像还是不行

@ubuntu:~/dev$ ./hfd.sh meta-llama/Llama-2-7b --hf_username xx--hf_token xxx--tool wget Fetching repo metadata... cat: Llama-2-7b/.hfd/repo_metadata.json: No such file or directory [Error] Failed to fetch metadata from https://hf-mirror.com/api/models/meta-llama/Llama-2-7b. HTTP status code: 000.

rm: cannot remove 'Llama-2-7b/.hfd/repo_metadata.json': No such file or directory 为啥设置了镜像还是不行

我也是一样的问题,不设置mirror镜像可以下载

@padeoe
Copy link
Author

padeoe commented Feb 7, 2025

@Arrebol2020 @chinesezyc 把模型目录下的 .hfd 目录后动删除后再试

@super31425
Copy link

@Arrebol2020 @chinesezyc 把模型目录下的 .hfd 目录后动删除后再试
hfd unsloth/DeepSeek-R1-GGUF --include UD-IQ1_M
Fetching repo metadata...
cat: DeepSeek-R1-GGUF/.hfd/repo_metadata.json: No such file or directory
/home/server4_disk4_58TB/supeng/worksapce/deepseek/hfd.sh: line 139: [: : integer expression expected
[Error] Failed to fetch metadata from https://hf-mirror.com/api/models/unsloth/DeepSeek-R1-GGUF. HTTP status code: .
rm: cannot remove 'DeepSeek-R1-GGUF/.hfd/repo_metadata.json': No such file or directory
一样的报错。手动删除.hfd也不行,可能是特定repo拉不下来,或者hf接口变了?

@super31425
Copy link

@Arrebol2020 @chinesezyc 把模型目录下的 .hfd 目录后动删除后再试
hfd unsloth/DeepSeek-R1-GGUF --include UD-IQ1_M
Fetching repo metadata...
cat: DeepSeek-R1-GGUF/.hfd/repo_metadata.json: No such file or directory
/home/server4_disk4_58TB/supeng/worksapce/deepseek/hfd.sh: line 139: [: : integer expression expected
[Error] Failed to fetch metadata from https://hf-mirror.com/api/models/unsloth/DeepSeek-R1-GGUF. HTTP status code: .
rm: cannot remove 'DeepSeek-R1-GGUF/.hfd/repo_metadata.json': No such file or directory
一样的报错。手动删除.hfd也不行,可能是特定repo拉不下来,或者hf接口变了?

在windows可以,可能是服务器网络设置问题

@padeoe
Copy link
Author

padeoe commented Feb 7, 2025

经排查是hf-mirror压力过大,导致的服务端问题,正在已经解决,(但近期由于DeepSeek相关模型下载量激增导致hf-mirror服务器较卡顿,可尝试备用端点)

@groklab
Copy link

groklab commented Feb 8, 2025

各位大佬,请教个初级问题。为啥aria2c几乎下载不动,wget还能稳定下载?

我运行./hfd.sh bigscience/bloom-560m --local-dir /models --tool wget 差不多7MB/s速度。这个wget是不是不能并行?

我运行./hfd.sh bigscience/bloom-560m --local-dir /models -x 1 -j 1 就下载几个MB之后就不动了。改变并行数量也是一样的行为。

环境是公司服务器。

请问咋回事?谢谢。

@padeoe
Copy link
Author

padeoe commented Feb 8, 2025

各位大佬,请教个初级问题。为啥aria2c几乎下载不动,wget还能稳定下载?

我运行./hfd.sh bigscience/bloom-560m --local-dir /models --tool wget 差不多7MB/s速度。这个wget是不是不能并行?

我运行./hfd.sh bigscience/bloom-560m --local-dir /models -x 1 -j 1 就下载几个MB之后就不动了。改变并行数量也是一样的行为。

环境是公司服务器。

请问咋回事?谢谢。

不太合理,用你的命令测试表现正常,没能复现

@groklab
Copy link

groklab commented Feb 8, 2025

各位大佬,请教个初级问题。为啥aria2c几乎下载不动,wget还能稳定下载?
我运行./hfd.sh bigscience/bloom-560m --local-dir /models --tool wget 差不多7MB/s速度。这个wget是不是不能并行?
我运行./hfd.sh bigscience/bloom-560m --local-dir /models -x 1 -j 1 就下载几个MB之后就不动了。改变并行数量也是一样的行为。
环境是公司服务器。
请问咋回事?谢谢。

不太合理,用你的命令测试表现正常,没能复现

谢谢大佬。没有sudo, 我是从conda-forge里面下载的aria2cjq。不知道是不是这个导致的。再就是可能公司IT做了啥限制。。

更新:今天一早又试了下,aria2c模式又可以了!谢谢🙏

@CHN-STUDENT
Copy link

CHN-STUDENT commented Feb 9, 2025

@padeoe 话说佬,是不是最近负载过大,我遇到了403错误

[#7ce225 16GiB/46GiB(35%) CN:1 DL:14MiB ETA:35m34s]                                                                                                                                                                                                                       
02/09 03:20:14 [ERROR] CUID#12 - Download aborted. URI=https://hf-mirror.com/unsloth/DeepSeek-R1-GGUF/resolve/main/DeepSeek-R1-UD-IQ2_XXS/DeepSeek-R1-UD-IQ2_XXS-00002-of-00004.gguf
Exception: [AbstractCommand.cc:351] errorCode=22 URI=https://cdn-lfs-us-1.hf-mirror.com/repos/f3/c8/f3c8ca66be2bd64c06f26b308de2e2f3bfff2bf40b0c143e9f25f4c929ecfe57/ea1f482a3bde4e8303b52a689b2f7fa0bcfd6bdf311be7704dff6b824b03a5ed?response-content-disposition=inline%3B+filename*%3DUTF-8%27%27DeepSeek-R1-UD-IQ2_XXS-00002-of-00004.gguf%3B+filename%3D%22DeepSeek-R1-UD-IQ2_XXS-00002-of-00004.gguf%22%3B&Expires=1739038493&Policy=eyJTdGF0ZW1lbnQiOlt7IkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTczOTAzODQ5M319LCJSZXNvdXJjZSI6Imh0dHBzOi8vY2RuLWxmcy11cy0xLmhmLmNvL3JlcG9zL2YzL2M4L2YzYzhjYTY2YmUyYmQ2NGMwNmYyNmIzMDhkZTJlMmYzYmZmZjJiZjQwYjBjMTQzZTlmMjVmNGM5MjllY2ZlNTcvZWExZjQ4MmEzYmRlNGU4MzAzYjUyYTY4OWIyZjdmYTBiY2ZkNmJkZjMxMWJlNzcwNGRmZjZiODI0YjAzYTVlZD9yZXNwb25zZS1jb250ZW50LWRpc3Bvc2l0aW9uPSoifV19&Signature=b-zZpWOIufCWgh4-RoHbVqiUj8KUIOTbO%7EY6Qpnl7%7E6NS6S8IzmhUbZ4nKITbBhI-W5sIUYcbVOhyjDKhtp2R6O2PLXkvl12rvobvG3ynibB7yI%7EKoP5CFJ7pEkLAG4XYpo4Gvhe7TI63MQcij%7EtnOkoeI6dSm7%7EUqlY9vrCxQ%7EiVtUuqu%7E1ZVq794HO8n4zF8LbGAwII27gMB4WhQpUzRj-j2AZ54BSG9ftpndsbsTcqtIz6kKXdzowv6O13pMbVEIgFiHActdLU-qwCkHTCzCujoG59x0EaS--ZQ6QIoe1dR0gTCRaSE2wlWFI9Q2kcK%7Eddf3WKWe50Cou86-H1g__&Key-Pair-Id=K24J24Z295AEI9
  -> [HttpSkipResponseCommand.cc:239] errorCode=22 响应状态不成功。状态=403

下载结果:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
b790d9|ERR |   653KiB/s|DeepSeek-R1-UD-IQ2_XXS/DeepSeek-R1-UD-IQ2_XXS-00004-of-00004.gguf
d6b953|ERR |   764KiB/s|DeepSeek-R1-UD-IQ2_XXS/DeepSeek-R1-UD-IQ2_XXS-00003-of-00004.gguf
e01a1c|ERR |   0.9MiB/s|DeepSeek-R1-UD-IQ2_XXS/DeepSeek-R1-UD-IQ2_XXS-00001-of-00004.gguf
7ce225|ERR |   679KiB/s|DeepSeek-R1-UD-IQ2_XXS/DeepSeek-R1-UD-IQ2_XXS-00002-of-00004.gguf

状态标识:
(ERR):发生错误。

传输重启后 aria2 可继续该下载。
如果发生任何错误,请参阅日志文件。详细信息见帮助/手册页面中的“-l”选项。
Download encountered errors.

更新:直接通过原命令继续下载,linux还是用的太少了,不太熟悉了。

话说能不能加个功能,下载失败继续重试下载,方便挂后台下载。

@marvelcell
Copy link

经排查是hf-mirror压力过大,导致的服务端问题,正在已经解决,(但近期由于DeepSeek相关模型下载量激增导致hf-mirror服务器较卡顿,可尝试备用端点)

请问大佬,备用端点的地址是什么呢?

@padeoe
Copy link
Author

padeoe commented Feb 10, 2025

经排查是hf-mirror压力过大,导致的服务端问题,正在已经解决,(但近期由于DeepSeek相关模型下载量激增导致hf-mirror服务器较卡顿,可尝试备用端点)

请问大佬,备用端点的地址是什么呢?

https://alpha.hf-mirror.com

可加网站首页微信群跟进备用地址

@Oklahomawhore
Copy link

换备用端点可以了,赞👍

经排查是hf-mirror压力过大,导致的服务端问题,正在已经解决,(但近期由于DeepSeek相关模型下载量激增导致hf-mirror服务器较卡顿,可尝试备用端点)

请问大佬,备用端点的地址是什么呢?

https://alpha.hf-mirror.com

可加网站首页微信群跟进备用地址

@xiuyanDL
Copy link

经排查是hf-mirror压力过大,导致的服务端问题,正在已经解决,(但近期由于DeepSeek相关模型下载量激增导致hf-mirror服务器较卡顿,可尝试备用端点)

请问大佬,备用端点的地址是什么呢?

https://alpha.hf-mirror.com

可加网站首页微信群跟进备用地址

这个alpha备用端点有个bug :
如果服务器本身开着代理的话, 端点配置为https://alpha.hf-mirror.com/的时候, 会走默认的cdn-lfs-us-1.hf.co,也就是会消耗代理的流量;
如果服务器本身没有代理,那么会走cdn-lfs-us-1.alpha.hf-mirror.com 。

但是老端点https://hf-mirror.com/没有上面所说的这个问题,一直走的是cdn-lfs-us-1.hf-mirror.com。

这个问题请麻烦看一下

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment