AI
一个案例
tokenizer 说明
加载数据集
DatasetDict 类
logits 说明
langchain(一)
关键词提取
RAG与向量检索
RAG与向量检索(二)
TF-IDF 算法
本文档使用 MrDoc 发布
-
+
首页
一个案例
安装依赖库: ``` pip install datasets pip install accelerate -U ``` 程序代码: ``` from transformers import ( BertTokenizer, BertForSequenceClassification, Trainer, TrainingArguments, EvalPrediction, ) from datasets import ( load_dataset, load_metric, ) import numpy as np # 加载数据集 # 假设你的数据集已经在Hugging Face的Datasets库中或者你有一个适合的本地数据集 # 这里我们使用一个示例数据集名 "sms_spam" dataset = load_dataset("sms_spam") # 加载预训练的tokenizer tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') # 准备数据集:将文本编码为模型可理解的格式 def encode_examples(examples): return tokenizer(examples['sms'], padding=False, truncation=True) encoded_dataset = dataset.map(encode_examples, batched=True) # 加载预训练的模型,准备进行微调 model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2) # 定义训练参数 training_args = TrainingArguments( output_dir='./results', # 输出目录 num_train_epochs=3, # 训练轮数 per_device_train_batch_size=8, # 每个设备的训练批次大小 per_device_eval_batch_size=8, # 每个设备的评估批次大小 warmup_steps=500, # 预热步数 weight_decay=0.01, # 权重衰减 logging_dir='./logs', # 日志目录 logging_steps=10, ) # def compute_metrics(pred): # labels = pred.label_ids # preds = pred.predictions.argmax(-1) # precision, recall, f1, _ = precision_recall_fscore_support( # labels, preds, average='binary') # acc = accuracy_score(labels, preds) # return { # 'accuracy': acc, # 'f1': f1, # 'precision': precision, # 'recall': recall # } # 定义性能评估指标 def compute_metrics(eval_pred: EvalPrediction): # logits, labels = eval_pred logits = eval_pred.predictions labels = eval_pred.label_ids # p.predictions 有可能包含 logits,需要将它们转换为最终的预测结果 predictions = np.argmax(logits, axis=-1) return load_metric("accuracy").compute(predictions=predictions, references=labels) # 初始化Trainer trainer = Trainer( model=model, # 训练的模型 args=training_args, # 训练参数 train_dataset=encoded_dataset['train'], # 训练数据集 compute_metrics=compute_metrics, # 计算指标的函数 ) # 开始训练 trainer.train() # 进行评估 trainer.evaluate() ``` ### 使用GPU设备进行训练 Hugging Face的`Trainer`类设计得非常灵活,它会自动检测可用的CUDA设备(GPU)并默认使用它们进行训练。因此,如果你的环境中有可用的GPU并且正确配置了CUDA,上述程序会自动使用GPU进行训练,无需手动设置特定的参数来启用GPU训练。 确保以下几点以利用GPU训练: - CUDA环境:确保你的机器安装了CUDA,并且版本与你的PyTorch安装兼容。你可以通过运行`nvidia-smi`命令来检查CUDA是否已正确安装,并查看可用的GPU设备。 - PyTorch版本:安装与CUDA版本兼容的PyTorch版本。PyTorch官方网站提供了不同CUDA版本的安装指令。 - 验证PyTorch是否识别GPU:你可以通过运行以下Python代码来检查PyTorch是否能够识别和使用GPU: ``` import torch if torch.cuda.is_available(): print(f"Number of CUDA devices available: {torch.cuda.device_count()}") print(f"CUDA device name: {torch.cuda.get_device_name(0)}") else: print("CUDA device not available.") ``` 如果以上条件都满足,Trainer类会自动利用GPU进行模型的训练。如果你的环境中有多个GPU,Trainer也支持多GPU训练,只需在`TrainingArguments`中设置适当的`per_device_train_batch_size`和`per_device_eval_batch_size`即可。 ### 强制使用CPU进行训练 如果出于某些原因你需要强制使用CPU进行训练,可以通过设置环境变量来实现,例如,在Python脚本的开始处加上: ``` import os os.environ["CUDA_VISIBLE_DEVICES"] = "" ``` 这将使PyTorch(以及大多数基于CUDA的库)认为没有可用的CUDA设备,因此会回退到CPU上进行计算。
gaojian
2024年4月3日 09:39
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码