huggingface 大模型下载与使用

安装依赖

1
2
3
pip install transformers datasets tokenizers
pip install torch==2.2.0
pip install "numpy<2"

下载

我们来尝试一下下载并使用模型

  • bert-base-chinese
  • gpt2-chinese-cluecorpussmall
  • roberta-base-chinese-extractive-qa

download_LLM.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from transformers import AutoModel, AutoTokenizer
# 分类模型
# model_name = "bert-base-chinese"
# cache_dir = "./models/bert-base-chinese"

# 文本生成模型
# model_name = "uer/gpt2-chinese-cluecorpussmall"
# cache_dir = "./models/gpt2-chinese-cluecorpussmall"

# 问答模型
model_name = "uer/roberta-base-chinese-extractive-qa"
cache_dir = "./models/roberta-base-chinese-extractive-qa"

model = AutoModel.from_pretrained(model_name, cache_dir=cache_dir)
tokenizer = AutoTokenizer.from_pretrained(model_name, cache_dir=cache_dir)

使用

使用本地模型

  • 文本生成模型

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
    model_dir = f"{绝对路径}/huggingFace/models/gpt2-chinese-cluecorpussmall/models--uer--gpt2-chinese-cluecorpussmall/snapshots/c2c0249d8a2731f269414cc3b22dff021f8e07a3"
    tokenizer = AutoTokenizer.from_pretrained(model_dir)
    model = AutoModelForCausalLM.from_pretrained(model_dir)
    generator = pipeline("text-generation", model=model, tokenizer=tokenizer, device=0)
    result = generator("你好,我是一款大模型",
    max_length=150,
    num_return_sequences=1,
    truncation=True,
    temperature=0.7,
    top_k=50,
    top_p=0.9,
    clean_up_tokenization_spaces=False
    )
    print(result)
  • 分类模型

    1
    2
    3
    4
    5
    6
    7
    from transformers import pipeline, BertTokenizer, BertForSequenceClassification
    model_dir = f"{绝对路径}/huggingFace/models/bert-base-chinese/models--bert-base-chinese/snapshots/c30a6ed22ab4564dc1e3b2ecbf6e766b0611a33f"
    model = BertForSequenceClassification.from_pretrained(model_dir)
    tokenizer = BertTokenizer.from_pretrained(model_dir)
    classifier = pipeline("text-classification", model=model, tokenizer=tokenizer)
    result = classifier("你好,我是一款大模型")
    print(result)
  • 问答模型

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    from transformers import pipeline, AutoTokenizer, AutoModelForQuestionAnswering
    model_dir = f"{绝对路径}/huggingFace/models/roberta-base-chinese-extractive-qa/models--uer--roberta-base-chinese-extractive-qa/snapshots/9b02143727b9c4655d18b43a69fc39d5eb3ddd53"
    tokenizer = AutoTokenizer.from_pretrained(model_dir)
    model = AutoModelForQuestionAnswering.from_pretrained(model_dir)
    qa_pipeline = pipeline("question-answering", model=model, tokenizer=tokenizer)
    result = qa_pipeline({
    "question":"Hugging Face 是什么",
    "context": "Hugging Face 是一个自然语言处理平台"
    })
    print(result)