优秀的编程知识分享平台

网站首页 > 技术文章 正文

huggingface使用笔记——环境配置

nanyue 2025-02-17 13:23:12 技术文章 4 ℃


重新拾起huggingface工具使用,之前一直卡在无法下载大模型这个地方,放弃了很久,在千问的帮助下,昨天重新在个人电脑,windows上安装开发环境,一路都比较顺利,某些工具需要在linux下用,这时候就需要用到wsl

要创建一个新的Python环境并安装能够使用Hugging Face库(如transformers)的工具,你可以按照以下步骤操作。这里假设你已经安装了Anaconda或Miniconda。


步骤 1: 创建新的Conda环境

首先,打开终端(Terminal)或者命令提示符(Command Prompt),然后输入以下命令来创建一个新的Conda环境。在这个例子中,我将环境命名为huggingface_env,并且指定Python版本为3.11,但你可以根据需要调整Python版本。

conda create --name huggingface_env python=3.11

步骤 2: 激活新创建的环境

创建完成后,你需要激活这个环境:

conda activate huggingface_env

激活后,你的命令行前面应该会显示(huggingface_env),表示当前处于这个环境中。

步骤 3: 安装必要的包

接下来,在激活的环境中安装Hugging Face的transformers库以及可能需要的其他依赖项。通常,你也需要安装torch或tensorflow,取决于你计划如何使用这些模型。

安装transformers库

pip install transformers

安装PyTorch

在这里必须按照官方网站上的安装指令,

https://pytorch.org/

https://pytorch.org/get-started/locally/

安装指令:

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126

原机器已经装好cuda,显卡是GeForce RTX 3050,上一次尝试huggingface的时候并不知道pytorch并不支持12.6,所以安装失败


如果你打算使用基于PyTorch的模型,可以通过下面的命令安装PyTorch。请访问PyTorch官网获取适合你系统的具体安装命令。这里提供一个通用的例子:

pip install torch torchvision torchaudio

安装TensorFlow

如果偏好TensorFlow,则可以这样安装:

pip install tensorflow

注意:有时你可能需要先更新pip到最新版本以避免安装过程中出现的问题:

pip install --upgrade pip

步骤 4: 验证安装

最后,确保一切安装正确。你可以在激活的环境中启动Python解释器,并尝试导入transformers来检查是否安装成功:

>>> from transformers import pipeline

>>> print(pipeline('sentiment-analysis')("I love using Hugging Face!"))

如果没有报错,并且能正常运行,说明环境配置成功。


通过上述步骤,你就创建了一个新的Conda环境,并成功安装了使用Hugging Face相关库所需的所有软件包。现在,你可以开始探索和使用Hugging Face提供的各种预训练模型了。

步骤4在国内是无法正常运行的,因为没有指定大模型,会默认从huggingface上下载,只能先从网上下载下来,使用离线大模型包

于是按照hf mirror镜像网站安装,这里需要注意,下载可以使用网页下载,IDM(windows平台下载工具),huggingface_cli,hfd工具下载

https://hf-mirror.com/首页上已经写得很清楚,第一次我使用huggingface_cli下载,这个是需要在pip下下载使用,并且需要设置环境变量,

这个工具并不方便,时常有下载中断的问题出现,倒腾了一上午,只下载了gpt2作为示例大模型,实在受不了,

下载指令:

conda activate huggingface_env
huggingface-cli download --resume-download nlptown/bert-base-multilingual-uncased-sentiment --local-dir nlptown
huggingface-cli download --resume-download deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B --local-dir deepseek-r1-Qwen-1.5B

尝试了使用hfd,注意,这个工具在windows下非常不方便使用,在linux下是很方便的,它只有一个脚本,配合wsl就能很方便地使用hfd,使用它前需要下载aria2,

sudo apt install aria2,

中途遇到apt无法连接服务器问题,更新了一下apt

按照官网指示同样需要设置环境变量,但这次没有设置,配置好hfd后,直接下载

./hfd.sh deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B


DeepSeek-R1-Distill-Qwen-1.5B约3.3GB,下载了几个小时,

最终结果:


环境安装部署好后编写测试代码

gpt2:

from transformers import AutoModelForCausalLM, AutoTokenizer

# 指定模型名称或路径
model_name_or_path = "H:/huggingface_model/gpt2"  # 使用预训练的GPT-2模型
#model_name_or_path = "X:/huggingface_model/DeepSeek-R1-Distill-Qwen-1.5B"  

# 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path)
model = AutoModelForCausalLM.from_pretrained(model_name_or_path)

# 定义输入提示
prompt_text = "Once upon a time in a magical forest,"

# 将输入提示编码为模型可以理解的形式
input_ids = tokenizer.encode(prompt_text, return_tensors='pt')

# 生成文本
output_sequences = model.generate(
    input_ids=input_ids,
    max_length=1024,  # 控制生成的最大长度
    temperature=0.8,  # 控制输出的随机性,值越低越确定
    top_k=50,  # 只考虑最有可能的50个单词
    top_p=0.95,  # 累积概率超过这个值的单词会被考虑
    repetition_penalty=1.0,  # 处理重复词汇的惩罚系数
    do_sample=True,  # 是否采样以增加多样性
)

# 解码生成的序列
generated_story = tokenizer.decode(output_sequences[0], skip_special_tokens=True)

print("Generated Story: ")
print(generated_story)

使用deepseek大模型的时候,遇到了问题,需要安装accelerate


import torch
import transformers
from accelerate import Accelerator  # 导入 accelerate 库

# 检查是否有可用的 GPU
device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"Using device: {device}")

# 模型路径
model_id = "D:/DevKit/huggingface_model/DeepSeek-R1-Distill-Qwen-1.5B"

# 创建 pipeline,并指定使用 GPU
pipeline = transformers.pipeline(
    "text-generation",
    model=model_id,
    model_kwargs={"torch_dtype": torch.bfloat16},
    device_map="auto"  # 自动分配 GPU 设备
)

# 输入消息
message = [
    {
        "role": "user",
        "content": "请问llama.cpp的main主入口函数在哪里?"    
    }
]

# 生成文本
outputs = pipeline(
    message,
    max_new_tokens=4096
)


# 打印生成的文本
print(outputs[0]["generated_text"][1])

成功调用!


最近发表
标签列表