.. _huggingface-cli: ======================== huggingface-cli ======================== `Hugging Face `_ 提供了 ``huggingface-cli`` 工具用于下载Model,不仅可以下载原始权重,也可以下载各种量化版本。 我在 :ref:`docker_compose_ollama` 遇到一个问题: 由于 :ref:`amd_mi50` 硬件架构比较陈旧,需要使用早期版本的 :ref:`ollama` 容器镜像,这导致后端 :ref:`llama.cpp` 无法兼容目前主流的 :ref:`llama` 3.3官方提供的GUFF格式,所以需要自己下载原始HuggingFace(HF)格式文件,使用旧版 :ref:`llama.cpp` 工具链来转换成兼容GUFF格式。 准备工作 =============== - 首先要在下载模型的页面,例如 `meta-llama/Llama-3.3-70B-Instruct `_ 同意其License - 然后在 `Hugging Face的Settings -> Access Tokens `_ 创建一个Access Token,注意这个token可以选择 ``Read`` 或 ``Write`` 类型,也可以完全控制设置权限 安装 ======== - 我使用 :ref:`virtualenv` 来构建一个Python环境: .. literalinclude:: huggingface-cli/virtualenv :caption: 构建一个Hugging Face的virtualenv - 安装工具并登录 .. literalinclude:: huggingface-cli/install :caption: 安装工具 .. warning:: Hugging Face在国内已经被GFW屏蔽,所以你必须 :ref:`across_the_great_wall` ,执行以下命令采用 :ref:`ssh_tunneling_dynamic_port_forwarding` 构建起一个socks代理: .. literalinclude:: ../../infra_service/ssh/ssh_tunneling_dynamic_port_forwarding/ssh_tunnel_dynamic :caption: 用一条命令构建一个socks代理 由于 ``hf`` 底层是基于Python的 ``requests`` 和 ``urllib3`` 库开发,所以可以直接读取系统的 **标准环境变量** 来使用SOCKS5代理(需要先安装 ``httpx[socks]`` ): .. literalinclude:: huggingface-cli/httpxsocks :caption: 设置hf使用代理 .. literalinclude:: huggingface-cli/auth :caption: 登录Hugging Face 使用 ======= - 下载模型: .. literalinclude:: huggingface-cli/download_qwen3.5 :caption: 下载Qwen3.5-35B-A3B .. literalinclude:: huggingface-cli/download_llama-3.3 :caption: 下载Llama-3.3-70B 镜像网站 ============ 虽然通过socks代理能够 :ref:`across_the_great_wall` 从Hugging Face下载模型,但是对于身在大陆,实际上下载速度还是乏善可陈,太浪费精力了。国内的 `HF-Mirror `_ 提供了Hugging Face镜像,而且无需登录就可以使用 ``hf`` 工具直接下载,速度飞快。 唯一的区别就就是在执行 ``hf`` 下载命令之前先设置环境变量 ``HF_ENDPOINT`` : .. literalinclude:: huggingface-cli/hf_endpoint :caption: 使用HF-Mirror镜像网站