十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Python3.10自然语言处理项目:HuggingFace+镜像部署教程

Python3.10自然语言处理项目:HuggingFace+镜像部署教程 .10自然语言处理项目镜像部署教程想要迅速搭建一个归属于自身的 AI 开发环境, 然而又不愿被繁杂的依赖以及版本冲突弄得顾此失彼、疲惫不堪? 今日, 就在这里讲述一下怎样运用最为简单的方式, 在.10 环境里面, 借由一个预先配置好的镜像, 顺利实行部署生态, 进而开始你的自然语言处理项目。这个教程的关键要点, 是一个被称作 -.10 的镜像, 你能够将其领会成一个“拿来就能用”的AI开发工具集合, 它已然为你预备好了3.10这个稳定且具备丰富功能的版本, 另外还有这个强大的环境管理工具。这表明你不需要通过手动方式去安装、处理环境变量, 更不用为不同项目之间的包版本冲突而忧心。不管是想要运行热门的在途模型, 又或是开展自身的模型微调试验, 这个环境都能够让你达成事倍功半的效果, 就跟教程核心提供的这个名为 -.10 的镜像一样, 这个镜像你可以理解为“开箱即用”的AI开发套件, 它准备好的版本稳定且功能丰富, 还有强大的环境管理工具, 有了它不用手动安装、配置环境变量, 不用担心不同项目包版本打架, 在这个环境跑通热门模型或进行自己的模型微调实验, 都能事半功倍。接下来, 我会一步一步地, 带着你去完成那整个的流程, 从环境启动开始, 一直到运行第一个模型。整个的这个过程, 是那样清晰看得明白, 就算是才刚刚接触到AI领域的新手, 也能够比较轻松地跟随着行进不乱套。1. 环境准备与快速启动首先, 我们得去获取, 然后启动这个被称作“工具箱”的东西。这里给出了两种主流的交互方式, 一种方式, 还有SSH终端这种方式。你能够依据自身习惯, 在这两者之中随意选择其中一个。1.1 通过 启动推荐新手有一个网页版的, 且是交互式的编程环境被提供了, 它特别适宜用来学习以及探索, 原因在于你能够一边书写代码, 一边去查看结果。拿取镜像: 找寻并且开启 -.10 镜像, 进入网络界面, 镜像开启之后, 系统平常将会给出一个入口链接, 点选它, 您会见到一个仿若下图的文件管理界面。去进行新建操作, 要点击右上角位置的“New”按钮, 之后选择“ 3”以此来创建出一个新的笔记本。已然准备妥当: 现下, 你会于新标签页里瞧见一个空的代码单格Cell。全部我们的操作都会在这些单格当中达成。1.2借助SSH终端推行启动推举进阶用户设若你更倾向于在命令行的环境之下开展相关工作, 又或者要求实施某些文件的操作行为, 那么SSH这种方式是于你而言更为径直的一种选取。获取SSH相关信息, 即开启镜像之后, 寻觅所给到的SSH连接指令, 连同IP地址, 以及端口号, 还有密码。连接终端之时, 开启你本地的终端程序诸如系统下的CMD, 或者Mac/Linux系统对应的工具, 键入差不多如下这般的命令去实施连接:ssh root你的镜像IP -p 端口号输入密码后你就进入了镜像系统的命令行环境。验证环境连接成功后你可以通过几个简单命令检查环境。python --version # 应显示 Python 3.10.x conda --version # 应显示 conda 版本信息不论挑选哪一种途径, 我们的, 处于3.10加上的那种环境, 已然准备妥当。紧接着, 我们着手给项目安装必需的“部件”。2. 安装核心AI库这是我们的镜像, 它已经自带了和包管理工具, 然而呢一些AI专用的库, 需要我们自己去安装, 别担心, 这个过程是非常简单的。于其中: 径直在首个代码单元格之内输入如下的命令, 随后按Shift与Enter组合键予以运行。于SSH终端那儿: 直接在命令行当中输入便可。首先, 我们进行深度学习框架的安装, 以及与之相关的GPU支持库的安装, 要是你的环境能够支持CUDA, 这般会使模型运行加速, 情况就是如此。pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118小提示: 上段链接里的cu118, 它表示的是CUDA 11.8, 如果你的环境当中不存在GPU, 或者仅仅想用CPU去运行, 那么能够采用pip torch这种方式来安装CPU版本。接下来, 要安装核心库, 还有另外一个。前者给出了数目众多至上万这样多的预训练模型, 后者涵盖了有着丰富内容的数据集合, 这能便利我们去开展训练以及进行评估。pip install transformers datasets为了使得数据处理可更高效些, 我们通常情形下还会去安装, 专门用于简化分布式训练的部分, 以及专门用于模型评估的部分。pip install accelerate evaluate最后, 安装一个常用的, 某些模型像T5, mT5会用到的工具包。pip install sentencepiece安装完成后你可以通过以下代码快速验证主要库是否安装成功# 在Jupyter的单元格或Python脚本中运行 import torch import transformers print(fPyTorch 版本: {torch.__version__}) print(fTransformers 版本: {transformers.__version__}) # 检查CUDA是否可用如果有GPU print(fCUDA 可用: {torch.cuda.is_available()})要是所有方面都顺遂发展, 你便会瞧见与之对应的版本编号, 还有关于CUDA能不能够被使用的提示信息。到了这个时候, 你的AI开发环境已然是全方位都配置妥当啦3. 快速上手运行你的第一个模型环境搭建完成了, 我们着手实际相关事宜呢。极为便利之一情况是, 通过寥寥几行代码即可调用强大的预训练模型。我们尝试一项经典的文本分类任务: 判定一条评论里的情感属于正面还是负面。我们将使用 API这是提供的最简单的模型调用方式。from transformers import pipeline # 创建一个情感分析管道模型会自动从Hub下载 classifier pipeline(sentiment-analysis) # 准备一些测试句子 test_texts [ I love this product! Its absolutely amazing., This is the worst experience Ive ever had., The item is okay, not great but not terrible either. ] # 进行预测 results classifier(test_texts) # 打印结果 for text, result in zip(test_texts, results): print(f文本: {text}) print(f 情感: {result[label]}, 置信度: {result[score]:.4f}) print(- * 50)实施该段代码的运行任务, 你便将会察觉到模型针对每一句话给定了“正面”或者“负面”这样的判定, 并且还存在着一个置信度分数情况。在整个流程之中, 模型的下载、加载以及推理的这些操作都是自行达成的, 难道不是极为简易的吗?4. 进阶实践微调一个文本分类模型只是单单运用预训练模型, 不会觉得足够过瘾吗? 我们去尝试用自身的数据来进行微调, 也就是去Fine-tune一个模型, 要让它变为更善于解决针对特定问题的一种状态。在这里挑选英文电影评论数据集, 确切来讲是IMDb来作为例子, 去微调出一个用于进行情感分类工作模式的BERT模型。4.1 加载数据集和模型首先, 我们把IMDb数据集从库加载出来, 并且加载一个预训练的BERT模型以及跟它对应的分词器。from datasets import load_dataset from transformers import AutoTokenizer, AutoModelForSequenceClassification # 1. 加载数据集 print(正在加载IMDb数据集...) dataset load_dataset(imdb) print(dataset) # 2. 加载分词器和模型 # 我们使用一个较小的BERT变体‘distilbert-base-uncased’训练更快 model_name distilbert-base-uncased tokenizer AutoTokenizer.from_pretrained(model_name) # 指定分类标签数为2正面/负面 model AutoModelForSequenceClassification.from_pretrained(model_name, num_labels2) print(f模型和分词器 {model_name} 加载完成)4.2 预处理数据模型没办法直接去处理文本, 得先借助分词器把它转化为数字ID, 也就是Token IDs。def preprocess_function(examples): # 对文本进行分词、截断和填充 return tokenizer(examples[text], truncationTrue, paddingmax_length, max_length512) # 对数据集的所有分片train, test应用预处理函数 tokenized_datasets dataset.map(preprocess_function, batchedTrue) # 为了训练我们重命名标签列并设置格式为PyTorch张量 tokenized_datasets tokenized_datasets.rename_column(label, labels) tokenized_datasets.set_format(torch) # 从训练集中取一小部分作为演示为了节省时间 small_train_dataset tokenized_datasets[train].shuffle(seed42).select(range(1000)) small_eval_dataset tokenized_datasets[test].shuffle(seed42).select(range(200))4.3 配置训练参数并开始微调使用的 API可以大大简化训练循环。from transformers import TrainingArguments, Trainer import numpy as np from datasets import load_metric # 定义评估函数计算准确率 def compute_metrics(eval_pred): metric load_metric(accuracy) logits, labels eval_pred predictions np.argmax(logits, axis-1) return metric.compute(predictionspredictions, referenceslabels) # 设置训练参数 training_args TrainingArguments( output_dir./my_imdb_model, # 模型输出目录 evaluation_strategyepoch, # 每个epoch结束后评估 save_strategyepoch, # 每个epoch结束后保存 learning_rate2e-5, # 学习率 per_device_train_batch_size8, # 每个设备的训练批次大小 per_device_eval_batch_size8, # 每个设备的评估批次大小 num_train_epochs3, # 训练轮数为了演示只设3轮 weight_decay0.01, # 权重衰减 logging_dir./logs, # 日志目录 logging_steps10, load_best_model_at_endTrue, # 训练结束后加载最佳模型 ) # 初始化Trainer trainer Trainer( modelmodel, argstraining_args, train_datasetsmall_train_dataset, eval_datasetsmall_eval_dataset, tokenizertokenizer, compute_metricscompute_metrics, ) print(开始训练...) trainer.train() print(训练完成)训练终结之后, 模型会自行存于./ 这个目录之中。你能够借用它开展预测, 恰似我们最开始所用到的那般。4.4 使用微调后的模型进行预测# 加载我们刚刚微调好的模型 from transformers import TextClassificationPipeline fine_tuned_model AutoModelForSequenceClassification.from_pretrained(./my_imdb_model/best_model) # 假设最佳模型保存在此 fine_tuned_tokenizer AutoTokenizer.from_pretrained(./my_imdb_model/best_model) custom_classifier TextClassificationPipeline(modelfine_tuned_model, tokenizerfine_tuned_tokenizer) # 测试一些新的评论 new_reviews [ The plot was predictable and the acting was subpar., A heartwarming story with brilliant performances., It was fine, Ive seen better. ] predictions custom_classifier(new_reviews) for review, pred in zip(new_reviews, predictions): print(f评论: {review}) print(f 预测: {pred[label]}, 分数: {pred[score]:.4f})5. 实用技巧与常见问题 5.1 环境管理与依赖冻结的强大之处在于环境隔离。建议为每个项目创建独立的环境# 在终端中执行 conda create -n my_nlp_project python3.10 conda activate my_nlp_project # 然后在这个新环境里安装上述所有包保存环境依赖方便复现pip freeze requirements.txt # 别人可以通过 pip install -r requirements.txt 一键安装所有依赖5.2 加速下载与模型缓存模型默认从海外下载可能会慢。可以设置镜像源import os os.environ[HF_ENDPOINT] https://hf-mirror.com # 在加载模型或数据集之前设置模型在默认状况之下, 将会被下载至~/.cache//这一位置。要是你的系统盘空间处在不足的情形, 那么能够对缓存路径予以修改:os.environ[TRANSFORMERS_CACHE] /path/to/your/cache5.3遇到问题时的排查思路, 或者说, 百分之九十九的情形下是包没有安装, 这时要用pip list检查是否安装了torch等, 并且用pip进行补装。CUDA出现问题, 原因是模型或者批次太大, 导致显存不足。需要尝试, 下载模型失败或者超时的话, 要检查网络, 或者使用上述的镜像源设置。运行速度慢的话, 要确认CUDA是否可用, 凭借torch.cuda.()来判断。要是得出的结果为False, 那么模型将会在CPU上运行, 速度会极其缓慢。6.总结。通过这篇教程我们完成了一个完整的自然语言处理项目闭环环境搭建方面, 借助-.10镜像, 我们差不多在几乎零配置的状况下, 实现了获取一个干干净净又相互隔离的3.10开发环境。之于工具安装, 我们开展了安装与生态的核心库这一行为, 从而给AI项目准备好了“武器库”。就快速体验而言, 运用API, 我们仅仅凭借几行代码便达成了体验预训练模型的强大能力这一点。针对于深度实践, 我们逐个步骤地完成了从数据加载、预处理、模型微调一直到最终预测的一整个完整流程, 进而掌握了使用微调模型的核心方式。这个按镜像所构建的部署办法, 其最大的益处就在于具备可重复再现的特征以及方便捷便的特性。你根本不用为操作系统之间所存在的差异、底层依赖相互之间带来的冲突困扰操心, 能够把相较以前更加多的精力着重汇聚于模型、数据以及算法自身。不管是处于学习的阶段、实验进行的时期还是原型得以发展建设的进程之中, 这确实皆是这样一条极为高效率的门道。下一步你可以尝试愿此教程成为你踏入AI大千世界的一块无比坚实的助力跳板, 动手操作运行一回代码, 你会对全个过程怀有更具深度的理解, 祝你开发能够心情愉悦
返回列表