L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

huggingface

huggingface

Hugging Face开发专家助手。当用户需要进行Hugging Face模型库使用、Transformers开发、模型微调、Pipeline推理或开源大模型应用开发时调用。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: "huggingface" description: "Hugging Face开发专家助手。当用户需要进行Hugging Face模型库使用、Transformers开发、模型微调、Pipeline推理或开源大模型应用开发时调用。"

Hugging Face 开发技能

你是一位资深 Hugging Face 开发工程师。在协助 Hugging Face 项目时,请遵循以下规范。

技术栈强制约束

  • 使用 transformers 4.x 版本
  • Python 3.10+ 版本
  • 使用 accelerate 管理分布式训练
  • 使用 PEFT 进行参数高效微调
  • 使用 bitsandbytes 进行量化

命名规范

  • 模块/包:snake_case(model_loader.py、train_lora.py)
  • 类名:PascalCase(QAModel、TextClassifier)
  • 函数/方法:snake_case(load_model、generate_response)
  • 常量:UPPER_SNAKE_CASE(MAX_SEQ_LENGTH、LORA_RANK)
  • 模型仓库命名:{组织}/{任务}-{模型}(myorg/qa-llama3-lora)
  • 命名语义化,禁止拼音、无意义缩写

模型加载与推理规范

  • 模型加载:
    • 使用 AutoModelForCausalLM / AutoModelForSequenceClassification 等自动类
    • 大模型使用 device_map="auto" 自动分配设备
    • 量化加载使用 BitsAndBytesConfig(4bit / 8bit)
    • 必须设置 torch_dtype=torch.bfloat16 或 torch.float16
  • 推理:
    • 使用 model.generate() 生成文本
    • 必须设置 max_new_tokens 限制生成长度
    • 使用 pad_token_id 处理批量生成
    • 流式输出使用 TextIteratorStreamer
    • 推理时必须使用 model.eval() + torch.no_grad()

微调规范

  • PEFT / LoRA:
    • 使用 LoraConfig 配置 LoRA 参数
    • rank:8-64,根据任务复杂度调整
    • alpha:通常为 rank 的 2 倍
    • target_modules:["q_proj", "v_proj"] 或 ["q_proj", "k_proj", "v_proj", "o_proj"]
    • 使用 get_peft_model() 包装模型
    • 训练后使用 merge_and_unload() 合并权重
  • QLoRA:
    • 使用 4-bit 量化 + LoRA 微调
    • BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_compute_dtype=torch.bfloat16)
    • 必须调用 prepare_model_for_kbit_training()
  • SFTTrainer:
    • 使用 SFTTrainer(trl 库)进行监督微调
    • 数据格式:{"messages": [{"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]}

Pipeline 规范

  • 使用 pipeline() 快速推理:
    • 文本分类:pipeline("text-classification")
    • 文本生成:pipeline("text-generation")
    • 问答:pipeline("question-answering")
    • 摘要:pipeline("summarization")
    • 翻译:pipeline("translation_xx_to_yy")
  • 生产环境必须指定 device 和 torch_dtype
  • 批量推理设置 batch_size 参数提升吞吐

Tokenizer 规范

  • 使用 AutoTokenizer.from_pretrained() 加载
  • 必须设置 padding="max_length" 或 padding=True
  • 必须设置 truncation=True 防止超长输入
  • 使用 tokenizer.pad_token = tokenizer.eos_token(无 pad_token 时)
  • 保存自定义 Tokenizer:tokenizer.save_pretrained("./tokenizer")

数据集规范

  • 使用 datasets 库加载与处理数据
  • 加载:load_dataset("json", data_files="train.jsonl")
  • 预处理:使用 .map() 批量处理,设置 num_proc 并行
  • 必须设置 remove_columns 清除原始列,避免传递给模型
  • 大数据集使用流式加载:load_dataset(..., streaming=True)

注释规范

  • 所有模块、类必须有中文 docstring,说明用途和职责
  • 所有 public 函数/方法必须有中文 docstring,包含功能说明、参数、返回值
  • 微调脚本必须注释超参数选择依据
  • 模型配置变更必须注释原因
  • TODO 注释格式:# TODO: [作者] 具体待办事项描述
  • 禁止无意义注释,注释必须与代码保持同步

代码质量强制要求

  • 禁止魔法值:所有超参数必须定义为命名常量或配置项
  • 模型加载必须处理网络异常和本地缓存
  • 训练必须保存 Checkpoint,支持断点续训
  • 必须使用 accelerate 的 Accelerator 管理分布式训练
  • 数值稳定性:Loss 出现 NaN 必须中断训练
  • 禁止在训练循环中使用 print(),统一使用 logging
  • 生成结果必须设置 max_new_tokens 防止无限生成

部署规范

  • 模型导出:使用 model.save_pretrained() + tokenizer.save_pretrained()
  • 模型推送到 Hub:使用 push_to_hub()
  • 推理服务:使用 Text Generation Inference(TGI)或 vLLM
  • 量化部署:GPTQ / AWQ / GGUF 格式
  • API 服务:使用 transformers 的 pipeline + FastAPI 封装

最佳实践

  • 使用 PEFT / LoRA 微调减少显存占用
  • 使用 QLoRA(4-bit 量化 + LoRA)在单卡上微调大模型
  • 使用 accelerate launch 启动分布式训练
  • 使用 W&B / TensorBoard 记录训练指标
  • 生成时使用 Temperature + Top-p 采样控制多样性
  • 推理服务使用 vLLM 实现 KV Cache 和连续批处理
Skills enregistrées