Hugging Face下载模型本地调用 注册账号首先登陆Hugging Face官网https://huggingface.co/ 访问时候需要使用代理base使用美国。安装Hugging Face库使用的系统(base)➜ ~ lsb_release-aNo LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu26.04LTS Release:26.04Codename: resolute基础环境搭建安装miniconda可以参考https://juejin.cn/post/7601076815450030095创建虚拟环境conda create-nhugging_facepython3.12conda activate hugging_face安装包安装CUDAcuDNN和PyTorchpip3installtorch torchvision安装Hugging Face核心组件 transformers datasets tokenizerspip3installtransformers datasets tokenizers这三个库是 Hugging Face 生态系统中用于自然语言处理NLP和大语言模型LLM开发的核心组件。它们各自分工明确通常配合使用。transformers核心模型库这是 Hugging Face 提供的一个强大的开源 Python 库为文本、计算机视觉、音频等多模态领域的顶尖机器学习模型提供了统一的定义框架。主要功能包含了数千个预训练模型如 BERT、GPT、T5 等并提供了一套简单易用的 API如Pipeline和Trainer方便开发者快速进行文本分类、机器翻译、文本生成、问答系统等任务的推理和微调训练。特点支持跨框架兼容如 PyTorch、TensorFlow极大地简化了与复杂自然语言处理模型交互的工作流程。datasets数据集管理库这个库主要用于简化数据集的加载、处理和版本管理是机器学习和数据科学项目中不可或缺的工具。主要功能允许用户通过简单的 API 轻松访问和下载大量开源的标准数据集。同时也支持加载和处理自定义数据集如文本、图像、音频和表格数据。特点提供了高效的数据处理、内存映射、版本控制以及数据隐私保护如匿名化等功能能够无缝对接transformers库进行模型训练和评估。tokenizers分词器库Tokenizers 是自然语言处理NLP流程中至关重要的第一步负责将人类可读的文本拆分成机器可以理解的、有意义的单元即 Token。主要功能在大语言模型LLM的流水线中分词器是一个完全独立的阶段。它通过特定的算法如 BPE 字节对编码将字符串编码为 Token ID 序列或者将 Token ID 解码回字符串。特点专为 Transformer 模型设计支持子词分词方法能够高效处理大型词汇表和罕见词汇。分词器的质量直接影响模型对上下文的理解、多语言处理以及算术等任务的表现。本地下载模型在前面我们创建的环境中运行如下脚本importos# 将 http://192.168.0.52:7897 替换为您实际的代理服务器地址和端口os.environ[HTTP_PROXY]http://192.168.0.52:7897os.environ[HTTPS_PROXY]http://192.168.0.52:7897fromtransformersimportAutoModelForCausalLM,AutoTokenizer# 将模型和分词器下载到本地指定保存路径model_nameQwen/Qwen3.5-0.8Bmodel_download_dir/home/gillbert/code/hugging_face_test/model# 放到当前项目的model目录下# 下载模型AutoModelForCausalLM.from_pretrained(model_name,cache_dirmodel_download_dir)# 下载分词工具AutoTokenizer.from_pretrained(model_name,cache_dirmodel_download_dir,trust_remote_codeTrue,device_mapauto)print(下载完成)(hugging_face)➜ hugging_face_test git:(master)✗lsREADME.md main.py model pyproject.toml(hugging_face)➜ hugging_face_test git:(master)✗ python3 main.py本地调用模型importtorchfromtransformersimportAutoModelForCausalLM,AutoTokenizer# 1. 配置模型路径替换为您本地实际的模型路径或名称config.json在哪个目录写到哪里model_name/home/gillbert/code/hugging_face_test/model/models--Qwen--Qwen3.5-0.8B/snapshots/2fc06364715b967f1860aea9cf38778875588b17# 2. 加载分词器和模型# trust_remote_codeTrue 是 Qwen 系列必需的用于加载自定义分词逻辑print(正在加载模型...)tokenizerAutoTokenizer.from_pretrained(model_name,trust_remote_codeTrue)modelAutoModelForCausalLM.from_pretrained(model_name,trust_remote_codeTrue,device_mapauto,# 自动分配 CPU/GPUtorch_dtypeauto# 自动选择精度如 float16以节省显存)model.eval()# 切换到推理模式print(模型加载完成)# 3. 定义对话生成函数defchat_with_qwen(user_input):# 构建 Qwen 模型要求的对话格式promptf|im_start|user\n{user_input}|im_end|\n|im_start|assistant\n# 将文字转换为模型可识别的张量inputstokenizer(prompt,return_tensorspt).to(model.device)# 模型推理关闭梯度计算以提升速度、降低内存占用withtorch.no_grad():outputsmodel.generate(**inputs,max_new_tokens512,# 控制回答的最大长度temperature0.7,# 控制回答的随机性0-1之间值越大越有创意top_p0.8,# 核采样控制输出词汇的多样性do_sampleTrue# 开启采样让回答更自然)# 将模型输出的数字张量解码为人类可读的文字responsetokenizer.decode(outputs[0],skip_special_tokensTrue)# 截取模型生成的答案去除输入提示词只保留输出answerresponse.replace(prompt,).strip()returnanswer# 4. 开启多轮对话测试if__name____main__:whileTrue:user_inputinput(\n你: )ifuser_input.lower()in[exit,quit,退出]:print(对话结束。)breakresponsechat_with_qwen(user_input)print(fQwen:{response})遇到的问题使用脚本下载时候下载一半停了再运行脚本无法下载了此时需要清除下之前下载的模型缓存rm-rf~/.cache/huggingface/hub/models--Qwen--Qwen3.5-0.8B参考文章https://pytorch.org/get-started/locally/