Hugging Face PEFT文档指南 - 第一章:开始使用

PEFT是一个库,用于有效微调预训练语言模型,降低计算和存储成本。文章介绍了LoRA、PrefixTuning等方法,支持的模型和任务,以及如何在不同场景中应用。

原文: PEFT文档指南 - 第一章:开始使用
https://huggingface.co/docs/peft/index

PEFT

🤗 PEFT(参数高效微调)是一个库,用于有效地将预训练的语言模型(PLMs)适应各种下游应用,而无需微调所有模型的参数。PEFT 方法仅微调少量(额外)模型参数,显著降低了计算和存储成本,因为微调大型 PLMs 的成本过高。最近的最先进的 PEFT 技术达到了与完全微调相当的性能。

PEFT 与 🤗 Accelerate 完美集成,用于利用 DeepSpeed 和 Big Model Inference 对大型模型。

  • 入门:如果您是🤗 PEFT 的新手,从这里开始,了解库的主要功能以及如何使用 PEFT 方法训练模型。

  • 操作指南:实用指南,展示如何在图像分类、因果语言建模、自动语音识别等不同类型的任务中应用各种 PEFT 方法。了解如何使用🤗 PEFT 与 DeepSpeed 和完全分片数据并行脚本。

  • 概念指南:更好地理解 LoRA 和各种软提示方法如何帮助减少可训练参数的数量,使训练更高效。

  • 参考:描述🤗 PEFT 类和方法如何工作的技术描述。


支持的方法

  1. LoRA:LORA:大型语言模型的低秩适应
  2. Prefix Tuning:Prefix-Tuning:优化连续提示以进行生成P-Tuning v2:提示调优可以在各个规模和任务上与微调相媲美
  3. P-Tuning:GPT 也懂
  4. Prompt Tuning:参数高效提示调优的规模力量
  5. AdaLoRA:参数高效微调的自适应预算分配
  6. LLaMA-Adapter:零初始化注意的高效语言模型微调
  7. IA3:通过抑制和放大内部激活注入适配器

支持的模型

下表列出了每项任务支持的 PEFT 方法和模型。要应用特定的 PEFT 方法进行任务,请参阅相应的任务指南。

因果语言建模

模型LoRAPrefix TuningP-TuningPrompt TuningIA3
GPT-2
…(其他模型和任务的表格内容)

我们已经为 ViTSwin 测试了在图像分类上的微调。然而,应该可以在🤗 Transformers 中使用 LoRA 对任何 基于ViT的模型 进行微调。查看 图像分类 任务指南以了解更多信息。如果您遇到问题,请开启一个问题。

…(其他模型和任务的表格内容)

与图像到文本模型一样,您应该能够将 LoRA 应用于任何 分割模型。值得注意的是,我们尚未在每个架构上进行测试。因此,如果您遇到任何问题,请亲切地创建一个问题报告。

模型LoRAPrefix TuningP-TuningPrompt TuningIA3
SegFormer
<think> 我们正在处理一个关于检查transformers和peft库版本运行错误的问题。用户要求确认步骤一运行结果中的具体错误并检查环境。 由于问题中没有提供具体的错误信息,我们需要用户提供错误日志或描述,但根据用户的要求,我们可能需要指导用户如何检查环境以及如何获取错误信息。 但是,考虑到用户可能已经遇到了错误,我们可以给出一些常见的环境检查步骤和可能的问题。 步骤: 1. 确认已安装的库版本:用户提到了transformers 4.53.3和peft 0.16.0,我们可以让用户检查这两个库是否确实安装正确。 2. 检查CUDA和PyTorch版本:因为这两个库通常用于深度学习,需要与CUDA和PyTorch兼容。 3. 查看具体的错误信息:运行代码时出现的错误信息是解决问题的关键。 我们可以建议用户执行以下命令来检查环境: - 检查Python版本:`python --version` - 检查PyTorch版本和CUDA支持:`python -c "import torch; print(torch.__version__); print(torch.version.cuda)"` - 检查transformers和peft版本:`pip show transformers peft` 同时,如果用户能提供具体的错误信息,我们可以更准确地定位问题。 常见的错误可能包括: - 版本不兼容:例如,peft 0.16.0可能需要特定版本的transformers,或者与当前安装的PyTorch版本不兼容。 - CUDA不可用:如果代码尝试在GPU上运行但环境不支持,可能会报错。 - 代码中的具体问题:例如,模型加载、参数设置等。 因此,我们可以这样回答: 由于您没有提供具体的错误信息,我建议您先通过以下步骤检查环境: 1. 使用以下命令检查已安装的库版本: ``` pip show transformers peft torch ``` 2. 检查CUDA是否可用: ```python import torch print(torch.cuda.is_available()) ``` 3. 如果错误发生在运行特定代码时,请提供错误日志,这样我们可以更准确地定位问题。 另外,请确保您的代码与所安装的库版本兼容。例如,peft 0.16.0和transformers 4.53.3应该是兼容的,但如果您使用的是较旧的代码,可能需要注意API的变化。 如果您能提供具体的错误信息,我们将能更好地帮助您。 同时,我们也可以生成一些相关问题,以便用户进一步排查: §§相关问题§§ 1. 如何检查PyTorch是否安装了CUDA支持? 2. transformers和peft库版本不兼容怎么办? 3. 运行transformers代码时出现CUDA out of memory错误怎么办? </think>根据您的需求,我将帮助您检查Transformers 4.53.3和PEFT 0.16.0环境的问题。以下是排查步骤和常见解决方案: ### 环境检查步骤 1. **验证库版本**: ```bash pip show transformers peft ``` 预期输出应包含: ``` Name: transformers Version: 4.53.3 --- Name: peft Version: 0.16.0 ``` 2. **检查CUDA兼容性**: ```python import torch from transformers import __version__ as tf_ver from peft import __version__ as peft_ver print(f"Torch CUDA可用: {torch.cuda.is_available()}") print(f"Transformers版本: {tf_ver}") print(f"PEFT版本: {peft_ver}") print(f"CUDA版本: {torch.version.cuda}") ``` ### 常见错误及解决方案 1. **版本冲突错误**: ```log ImportError: cannot import name '...' from 'transformers' ``` **解决方案**: ```bash pip install transformers==4.53.3 peft==0.16.0 --force-reinstall ``` 2. **CUDA内存不足**: ```log torch.cuda.OutOfMemoryError: CUDA out of memory ``` **解决方案**: ```python model = AutoModelForCausalLM.from_pretrained(..., torch_dtype=torch.float16, # 半精度 device_map="auto") # 自动设备分配 ``` 3. **API变更错误** (PEFT 0.16.0特有): ```log AttributeError: 'PeftModel' object has no attribute 'merge_and_unload' ``` **解决方案**: ```python # 新版本加载方式 from peft import PeftModel base_model = AutoModelForCausalLM.from_pretrained(...) peft_model = PeftModel.from_pretrained(base_model, adapter_path) merged_model = peft_model.merge_adapter() # 新API ``` ### 环境健康检查脚本 ```python # env_check.py import torch from transformers import AutoModel from peft import get_peft_model, LoraConfig try: # 1. 基础环境检查 print(f"PyTorch: {torch.__version__}, CUDA: {torch.version.cuda}") print(f"GPU可用: {torch.cuda.is_available()}") # 2. 最小模型加载测试 model = AutoModel.from_pretrained("bert-base-uncased") print("Transformers加载成功 ✓") # 3. PEFT配置测试 peft_config = LoraConfig(r=8, lora_alpha=16) peft_model = get_peft_model(model, peft_config) print("PEFT配置成功 ✓") except Exception as e: print(f"错误: {str(e)}") import traceback traceback.print_exc() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值