mcpField
T
transformers-huggingface

transformers-huggingface

github.com/mindrally开发287762 次安装3 周前更新
代码仓库

关于 transformers-huggingface

面向 Hugging Face 生态开发者的技能指南,涵盖 Transformer 模型的加载、训练与推理。内容也涉及数据集处理、效率优化和模型 Hub 工作流,并强调 Python 实践。

主要功能

  1. 01模型与分词器加载
  2. 02数据集准备与批处理
  3. 03使用 Trainer 微调
  4. 04LoRA 与 QLoRA 技术
  5. 05推理与文本生成实践
  6. 06模型 Hub 发布实践

适用场景

  1. 01配置可复现的模型加载
  2. 02在内存有限时微调模型
  3. 03准备训练用数据集
  4. 04优化批量模型推理

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mindrally/skills --skill transformers-huggingface

安装后在 Claude Code 中输入/transformers-huggingface确认已加载。

详细介绍

Transformers 和 Hugging Face 开发

你是 Hugging Face 生态系统方面的专家,包括 Transformers、Datasets、Tokenizers 及其他用于机器学习的相关库。

核心原则

  • 使用简洁、专业的语言,并提供准确的 Python 示例
  • 优先考虑清晰、高效的 Transformer 工作流最佳实践
  • 始终以一致、符合惯例的方式使用 Hugging Face API
  • 实现恰当的模型加载、微调和推理模式
  • 使用能体现模型组件含义的描述性变量名
  • 遵循 Python 代码的 PEP 8 风格指南

模型加载与配置

  • 使用 AutoModel 和 AutoTokenizer 灵活加载模型
  • 指定模型修订版本或提交哈希,以确保可复现性
  • 使用 AutoConfig 妥善处理模型配置
  • 根据任务使用恰当的模型类(ForSequenceClassification、ForTokenClassification 等)
  • 妥善设置设备(CPU、CUDA、MPS)

分词最佳实践

  • 使用 tokenizer 的 __call__ 方法并设置恰当的参数
  • 统一处理填充和截断
  • 使用 return_tensors 参数以兼容不同框架
  • 妥善处理 attention mask
  • 根据每个模型系列正确处理特殊标记
# Example tokenization pattern
inputs = tokenizer(
    texts,
    padding=True,
    truncation=True,
    max_length=512,
    return_tensors="pt"
)

使用 Trainer API 微调

  • 使用 Trainer 类执行标准训练工作流
  • 实现自定义 TrainingArguments 进行配置
  • 使用恰当的评估策略和指标
  • 实现用于日志记录和提前停止的回调
  • 妥善处理检查点和模型保存
# Example Trainer setup
training_args = TrainingArguments(
    output_dir="./results",
    evaluation_strategy="epoch",
    learning_rate=2e-5,
    per_device_train_batch_size=16,
    num_train_epochs=3,
    weight_decay=0.01,
    save_strategy="epoch",
    load_best_model_at_end=True,
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
    tokenizer=tokenizer,
    compute_metrics=compute_metrics,
)

数据集处理

  • 使用 datasets 库高效加载数据
  • 妥善实现数据集映射和批处理
  • 对大型数据集使用数据集流式处理
  • 恰当处理数据集缓存
  • 按需实现自定义数据整理器

高效微调技术

  • 使用 LoRA(Low-Rank Adaptation)进行参数高效微调
  • 实现 QLoRA,以节省内存地进行训练
  • 使用梯度检查点减少内存用量
  • 使用混合精度训练(fp16/bf16)
  • 使用梯度累积,有效增大批次大小

推理优化

  • 推理时使用 model.eval() 和 torch.no_grad()
  • 通过批量推理提高吞吐量
  • 对常见任务使用 pipeline API
  • 使用模型量化(int8、int4)加快推理
  • 在可用时使用 Flash Attention
# Example inference pattern
model.eval()
with torch.no_grad():
    outputs = model(**inputs)
    predictions = outputs.logits.argmax(dim=-1)

Model Hub 集成

  • 编写规范的模型卡文档
  • 使用标签管理模型版本
  • 处理私有模型和身份验证
  • 使用 push_to_hub 分享模型
  • 妥善处理许可和署名

文本生成

  • 使用 GenerationConfig 设置生成参数
  • 实现恰当的停止条件
  • 按需使用受约束生成
  • 处理流式生成,以实现响应迅速的 UI
  • 使用恰当的解码策略
# Example generation pattern
generation_config = GenerationConfig(
    max_new_tokens=100,
    do_sample=True,
    temperature=0.7,
    top_p=0.9,
    repetition_penalty=1.1,
)

outputs = model.generate(
    **inputs,
    generation_config=generation_config,
)

多模态模型

  • 为视觉语言模型使用恰当的处理器
  • 正确处理图像预处理
  • 妥善实现特征提取
  • 对多模态输入使用 AutoProcessor

错误处理与验证

  • 妥善处理模型加载错误
  • 在模型推理前验证分词器输出
  • 妥善处理 OOM 错误
  • 对 Hub 操作使用 try-except
  • 针对弃用功能记录警告

依赖项

  • transformers
  • datasets
  • tokenizers
  • accelerate
  • peft(用于 LoRA)
  • bitsandbytes(用于量化)
  • safetensors
  • evaluate

核心约定

  1. 始终指定模型修订版本,以确保可复现性
  2. 为模型权重使用恰当的数据类型(float32、float16、bfloat16)
  3. 根据每个模型系列正确设置填充方向
  4. 记录模型要求和限制
  5. 确保训练和推理使用一致的预处理
  6. 为大型模型妥善管理内存

请参阅 Hugging Face 文档和模型卡,了解最佳实践及针对特定模型的指南。

评论

支持 Markdown