网站建设技术进行开发,特种设备企业服务平台,麦当劳订餐网站 是谁做的,北京定制公交appHuggingface初步实战 一、前期准备工作二、学习pipline2.1.试运行代码#xff0c;使用HuggingFace下载模型2.2. 例子1#xff0c;情感检测分析(只有积极和消极两个状态)2.3. 例子2#xff0c;文本生成 三、学会使用Tokenizer Model3.1.tokenizer#xff08;分词器使用HuggingFace下载模型2.2. 例子1情感检测分析(只有积极和消极两个状态)2.3. 例子2文本生成 三、学会使用Tokenizer Model3.1.tokenizer分词器是处理文本数据的重要组件3.2.tokenizer对字符串处理过程 四、pytorch的简单使用五、模型的保存save 加载load六、学会使用huggingface的文档 一、前期准备工作
1.会使用Conda创建自己的虚拟环境 2.会激活自己的虚拟环境 3.了解一定pytorch基础
官方要求 python 3.6 pytorch 1.1.0 TensorFlow 2.0 本文使用的环境 python 3.7.1 pytorch 1.13.1 py3.7_cuda11.7_cudnn8_0 tensorflow 1.15.0
二、学习pipline
pipeline是Hugging Face Transformers库中的一个高层API旨在简化各种自然语言处理任务的执行。通过它用户可以在几行代码内实现从模型加载到推理的整个流程而不需要深入了解模型的架构细节。
pipeline 支持多种常见任务包括
文本分类如情感分析对输入文本进行分类返回类别标签和置信度。问答基于上下文回答问题。文本生成如对话生成基于输入提示生成文本片段。翻译将文本从一种语言翻译成另一种语言。填空填充掩码完成缺失的词或短语适用于填空任务。
通过指定任务名称如pipeline(sentiment-analysis)可以直接加载相关的预训练模型和分词器使开发过程更加高效直观。
2.1.试运行代码使用HuggingFace下载模型
Hugging Face的pipeline方法下载的模型默认会保存在用户目录下的.cache文件夹中具体路径是
C:/Users/11874/.cache/huggingface/transformers/这里的代码是因为需要网络代理科学上网才可以下载huggingface的模型查找自己网络代理中的端口号本文的端口号是7890
2.2. 例子1情感检测分析(只有积极和消极两个状态)
# 这里从Hugging Face的Transformers库中导入pipeline函数
# pipeline是一个高层API便于直接调用预训练模型完成特定任务。
from transformers import pipeline# 这里使用Python的os模块设置了环境变量将代理服务器的地址和端口号设置为
# 127.0.0.1:7890。这种设置通常用于需要通过代理访问互联网的情况
# 帮助解决从Hugging Face Hub下载模型时的网络连接问题。
import os
os.environ[http_proxy] http://127.0.0.1:7890
os.environ[https_proxy] http://127.0.0.1:7890# 这里通过pipeline创建了一个情感分析任务的管道。它会自动下载并加载一个适合情感分析的预训练模型如基于BERT或DistilBERT的模型并准备好用于推理。
classifier pipeline(sentiment-analysis)# 这里调用classifier对输入的句子执行情感分析。模型会根据句子内容预测情感标签例如positive或negative并返回分类结果及其置信度。
res classifier(I have been waiting for a HuggingFace course my whole life.)print(res)输出
[{label: NEGATIVE, score: 0.9484281539916992}]2.3. 例子2文本生成
from transformers import pipelineimport os
os.environ[http_proxy] http://127.0.0.1:7890
os.environ[https_proxy] http://127.0.0.1:7890# 通过pipeline函数创建了一个文本生成的管道并指定模型为distilgpt2
# 这是一个较轻量的GPT-2模型。pipeline会自动从Hugging Face Hub下载该模型。
generator pipeline(text-generation, modeldistilgpt2)res generator(In my home, I have a, # 对此内容扩写max_length 30, # 生成的文本长度上限为30个token。num_return_sequences 2, # 生成两个不同的文本序列提供不同的生成结果。
)print(res)输出
[{generated_text: In my home, I have a daughter, my son and her own daughter, and I have a son and daughter whose mom has been a patient with},
{generated_text: In my home, I have a couple dogs. Those were all my pets.\n“I started out in the farmhouse. I used to}]三、学会使用Tokenizer Model
3.1.tokenizer分词器是处理文本数据的重要组件 exp1代码使用了Hugging Face提供的高层次pipeline接口默认加载一个预训练的情感分析模型。这种方式简单易用适合快速原型开发但使用的具体模型和tokenizer不明确。 exp2代码则显式地加载了特定的模型distilbert-base-uncased-finetuned-sst-2-english及其对应的tokenizer。通过AutoModelForSequenceClassification和AutoTokenizer用户可以更灵活地选择和定制模型。这种方式适合对模型进行微调或需要特定模型功能的情况。
from transformers import pipeline
from transformers import AutoTokenizer, AutoModelForSequenceClassificationimport os
os.environ[http_proxy] http://127.0.0.1:7890
os.environ[https_proxy] http://127.0.0.1:7890# exp 1:这段代码使用了Hugging Face提供的高层次pipeline接口默认加载一个预训练的情感分析模型。这种方式简单易用适合快速原型开发但使用的具体模型和tokenizer不明确。
classifier pipeline(sentiment-analysis)
res classifier(I have been waiting for a HuggingFace course my whole life.)
print(res)# exp 2:这段代码则显式地加载了特定的模型distilbert-base-uncased-finetuned-sst-2-english及其对应的tokenizer。通过AutoModelForSequenceClassification和AutoTokenizer用户可以更灵活地选择和定制模型。这种方式适合对模型进行微调或需要特定模型功能的情况。
model_name distilbert-base-uncased-finetuned-sst-2-english
model AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer AutoTokenizer.from_pretrained(model_name)classifier pipeline(sentiment-analysis, modelmodel, tokenizertokenizer)
res classifier(I have been waiting for a HuggingFace course my whole life.)
print(res)输出
[{label: POSITIVE, score: 0.9433633089065552}]
[{label: POSITIVE, score: 0.9433633089065552}]3.2.tokenizer对字符串处理过程
from transformers import AutoTokenizer, AutoModelForSequenceClassificationimport os
os.environ[http_proxy] http://127.0.0.1:7890
os.environ[https_proxy] http://127.0.0.1:7890model_name distilbert-base-uncased-finetuned-sst-2-english
model AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer AutoTokenizer.from_pretrained(model_name)#这一步使用tokenizer对输入的句子进行编码。
sequence Playing computer game is simple.
res tokenizer(sequence)
print(res) # {input_ids: [101, 2652, 3274, 2208, 2003, 3722, 1012, 102], attention_mask: [1, 1, 1, 1, 1, 1, 1, 1]}# 这一行调用tokenizer.tokenize()方法将句子拆分为tokens子词或词。
# 在自然语言处理NLP中分词通常是将文本切分为可以被模型处理的最小单位。
# 输出结果将是一个tokens的列表例如
tokens tokenizer.tokenize(sequence)
print(tokens) # [Playing, computer, game, is, simple, .]# 这里使用tokenizer.convert_tokens_to_ids()方法将分词后的tokens转换为对应的ID。
# 每个token都有一个唯一的ID这些ID可以被模型理解。
ids tokenizer.convert_tokens_to_ids(tokens)
print(ids) # [2652, 3274, 2208, 2003, 3722, 1012]# 使用tokenizer.decode()方法将token ID转换回原始字符串。这个过程将ID映射回对应的tokens并将它们合并成一个可读的文本。
decoded_string tokenizer.decode(ids)
print(decoded_string) # playing computer game is simple.输出
{input_ids: [101, 2652, 3274, 2208, 2003, 3722, 1012, 102], attention_mask: [1, 1, 1, 1, 1, 1, 1, 1]}
[playing, computer, game, is, simple, .]
[2652, 3274, 2208, 2003, 3722, 1012]
playing computer game is simple.四、pytorch的简单使用
from transformers import pipeline
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
import torch.nn.functional as Fimport os
os.environ[http_proxy] http://127.0.0.1:7890
os.environ[https_proxy] http://127.0.0.1:7890# 1.还是用之前的pipeline应用
model_name distilbert-base-uncased-finetuned-sst-2-english
model AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer AutoTokenizer.from_pretrained(model_name)
classifier pipeline(sentiment-analysis, modelmodel, tokenizertokenizer)# 2.通常不止一个句子这里我们多放一个句子用list
text_Train [I love you, my wife.,Suzhou is the worst place!]
# 3.输出分析的情感
res classifier(text_Train)
print(res)# 4.使用分词器对输入的文本进行批处理设置paddingTrue和truncationTrue确保输入序列的长度一致。
max_length512限制了输入的最大长度return_tensorspt表示将输出转换为PyTorch的张量格式。
batch tokenizer(text_Train, paddingTrue, truncationTrue, max_length512, return_tensorspt)
print(batch)# 5.torch.no_grad()用于关闭梯度计算以节省内存和加速计算因为在推理过程中不需要更新模型参数。
# model(**batch)将预处理过的批量输入传递给模型返回的outputs包含了模型的原始输出logits。
# 使用F.softmax(outputs.logits, dim1)计算每个类的概率分布。
# torch.argmax(predictions, dim1)用于确定概率最高的类别标签表示每个输入文本的最终情感预测。
with torch.no_grad():print()outputs model(**batch)print(outputs)predictions F.softmax(outputs.logits, dim1)print(predictions)labels torch.argmax(predictions, dim1)print(labels)输出
五、模型的保存save 加载load
1.保存这里指定了保存路径为当前工作目录下的一个名为saved的文件夹。如果没有特殊路径指定模型和分词器会默认保存在你运行代码的当前目录下的saved文件夹中。这个文件夹会包含 tokenizer配置文件例如tokenizer_config.jsonvocab.txtspecial_tokens_map.json等。 模型配置文件和权重如config.json和pytorch_model.bin这些文件包含模型的结构和权重。
2.加载代码在后续使用时可以通过指定保存的目录例如saved来加载已经保存的模型和分词器避免重新下载模型。这在离线使用或需要跨项目共享时非常有用。
from transformers import pipeline
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
import torch.nn.functional as Fimport os
os.environ[http_proxy] http://127.0.0.1:7890
os.environ[https_proxy] http://127.0.0.1:7890# 还是用之前的pipeline应用
model_name distilbert-base-uncased-finetuned-sst-2-english
model AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer AutoTokenizer.from_pretrained(model_name)
classifier pipeline(sentiment-analysis, modelmodel, tokenizertokenizer)# 1.保存: tokenizer和model到一个目录下面
save_directory saved # 保存路径为当前工作目录下的一个名为saved的文件夹
tokenizer.save_pretrained(save_directory)
model.save_pretrained(save_directory)# 2.加载想再次加载他使用下列方法
tok AutoTokenizer.from_pretrained(save_directory)
mod AutoModelForSequenceClassification.from_pretrained(save_directory)输出:
六、学会使用huggingface的文档
非常重要HF的文档可以找到任何你想找到的东西 链接: HuggingFace文档 链接: 具体例子文档(有语音、情感分析、文本生成、图片识别等等)