AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The Transformers skill provides a programmatic interface to the Hugging Face ecosystem, enabling users to load pre-trained models, execute inference pipelines, and perform fine-tuning on custom datasets. It supports a wide range of modalities including text, vision, and audio, with specific utilities for tokenization, generation control, and device management using the Trainer API.
What it does
- Loads pre-trained models via AutoModel classes for various tasks.
- Executes inference using the Pipeline API for rapid prototyping.
- Configures text generation parameters such as temperature, top-k, and top-p sampling.
- Facilitates model fine-tuning using the Trainer API with support for custom datasets.
- Manages tokenization, including padding, truncation, and special token handling.
- Handles authentication for private or gated models via the Hugging Face Hub.
When to use it
- When integrating pre-trained models into custom Python workflows.
- For performing inference on text, audio, or vision data.
- When fine-tuning models on domain-specific datasets.
- For managing complex model configurations and device placement.
Advantages
- Provides unified access to diverse model architectures.
- Simplifies complex tasks through high-level pipeline abstractions.
- Offers granular control over model precision and hardware utilization.
- Supports standard authentication patterns for secure model access.
Usage examples
- “Use the pipeline API to generate text with a specific model.”
- The agent initializes a text-generation pipeline with the specified model and returns generated text based on the input prompt.
- “Load a model for sequence classification with custom device mapping.”
- The agent uses AutoModelForSequenceClassification to load the model, applying automatic device placement for optimized execution.
- “Fine-tune a model using the Trainer API.”
- The agent configures TrainingArguments and initializes a Trainer instance to execute the fine-tuning process on the provided dataset.
- “Authenticate to the Hugging Face Hub for private model access.”
- The agent guides the user through the CLI login process or environment variable configuration to securely access gated models.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/k-dense-ai/transformers/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip transformers.zip -d .agents/skills
Documentation by K-Dense Inc.
Transformers
Overview
The Hugging Face Transformers library provides access to thousands of pre-trained models for tasks across NLP, computer vision, audio, and multimodal domains. Use this skill to load models, perform inference, and fine-tune on custom data.
Installation
Targets Transformers 5.18.0, verified against its released source on 2026-10-01. Native CPU checks use Python 3.11, Torch 2.14.1, Datasets 5.0.1, Accelerate 1.15.0, PEFT 0.21.2, and Hub 1.33.0. The Torch extra requires Torch >=2.5. Install in a dedicated environment:
uv venv --python 3.11 .venv-transformers
uv pip install --python .venv-transformers/bin/python "transformers[torch]==5.18.0" "torch==2.14.1" "huggingface-hub==1.33.0" "datasets==5.0.1" "accelerate==1.15.0" "peft==0.21.2"Use .venv-transformers/Scripts/python.exe on Windows. Select an appropriate Torch build for the target hardware before installation. Hub 2.1.1 is newer, but Datasets 5.0.1 requires Hub <2; upgrading every package independently makes this training stack unsatisfiable. The separate esm SDK currently requires Transformers <5 and belongs in another environment.
Optional dependencies (install only for the selected workflow): Pillow 12.3.0 for images; torchvision matched to Torch and timm 1.0.30 for models that require them; librosa 1.0.0 and soundfile 0.14.0 for audio preprocessing (librosa requires Python >=3.12); FFmpeg for encoded audio file inputs; pytesseract plus Tesseract for OCR document pipelines; bitsandbytes 0.50.2 for supported quantization backends. See model loading before choosing precision or quantization.
Verification used tiny random models, synthetic input, and local save/reload only. Hub pretrained examples throughout this skill are illustrative: public checkpoint metadata and configurations were reviewed, but no weights or datasets were downloaded and no hosted inference or uploads were run. Optional export/distributed/hardware paths are source-checked, not end-to-end tested. See review evidence.
Check your version:
import transformers
print(transformers.__version__)Authentication
Many models on the Hugging Face Hub are gated or private. Authenticate before loading them.
Recommended: CLI login (uses $HF_TOKEN_PATH, defaulting to $HF_HOME/token, normally ~/.cache/huggingface/token):
hf auth loginPython:
from huggingface_hub import login
login() # Interactive prompt; do not hardcode tokens in scriptsServers / CI: set HF_TOKEN in the environment (never commit tokens to git or shell profiles):
export HF_TOKEN="..." # Read token from a secret manager, not source codeGet tokens at: https://huggingface.co/settings/tokens
Security: Never paste tokens into notebooks, repos, or shared configs. Prefer hf auth login over exporting tokens in .bashrc or .zshrc.
Use the narrowest token scope that works: read for private or gated model downloads, write only for uploads. If a long-running environment should not send the stored token on every Hub request, set HF_HUB_DISABLE_IMPLICIT_TOKEN=1 and pass a token only where authentication is required.
Transformers v5
Transformers v5 is PyTorch-only (TensorFlow and JAX backends were removed). For upgrades from v4, see the v5 migration guide. Transformers 5.18.0 accepts Hub >=1.31,<3; preserve the tighter constraint of Datasets when training.
Gated or custom architectures: accept the model license on the Hub, then load with trust_remote_code=True only when required custom code has been reviewed; pin its full immutable commit with revision (and code_revision for a separate code repository). Gating and custom code are independent: a gated built-in architecture does not require remote code.
Cache location: set HF_HOME for all Hugging Face caches, or HF_HUB_CACHE just for Hub files. Use HF_HUB_OFFLINE=1 only after required model snapshots are already cached.
Quick Start
Use the Pipeline API for fast inference without manual configuration:
from transformers import pipeline
# Text generation (prefer max_new_tokens for causal LMs)
generator = pipeline("text-generation", model="Qwen/Qwen2.5-1.5B")
result = generator("The future of AI is", max_new_tokens=50)
# Text classification
classifier = pipeline("text-classification", model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")
result = classifier("This movie was excellent!")
# Generative question answering: verify responses against the supplied context.
qa = pipeline("text-generation", model="Qwen/Qwen2.5-0.5B-Instruct")
result = qa([{ "role": "user", "content": "Context: AI means artificial intelligence. What does AI mean?" }], max_new_tokens=32, do_sample=False)Core Capabilities
1. Pipelines for Quick Inference
Use for simple, optimized inference across many tasks. Supports text generation, classification, NER, image classification, object detection, audio classification, and more. In v5, question-answering, summarization, translation*, text2text-generation, image-to-text, and visual-question-answering pipelines are removed. Use direct task models when exact extractive/seq2seq semantics are needed; generative text/VLM pipelines are different tasks, not equivalent replacements.
When to use: Quick prototyping, simple inference tasks, no custom preprocessing needed.
See references/pipelines.md for comprehensive task coverage and optimization.
2. Model Loading and Management
Load pre-trained models with fine-grained control over configuration, device placement, and precision.
When to use: Custom model initialization, advanced device management, model inspection.
See references/models.md for loading patterns and best practices.
3. Text Generation
Generate text with LLMs using various decoding strategies (greedy, beam search, sampling) and control parameters (temperature, top-k, top-p).
When to use: Creative text generation, code generation, conversational AI, text completion.
For chat or instruction-tuned checkpoints, format messages with that checkpoint's tokenizer.apply_chat_template rather than hand-written role delimiters. Prefer tokenize=True; if formatting with tokenize=False and tokenizing afterward, set add_special_tokens=False to avoid duplicated BOS/EOS tokens. Use add_generation_prompt=True to start a new assistant reply, and preserve the same template when preparing fine-tuning data.
See references/generation.md for generation strategies and parameters.
4. Training and Fine-Tuning
Fine-tune pre-trained models on custom datasets using the Trainer API with automatic mixed precision, distributed training, and logging.
When to use: Task-specific model adaptation, domain adaptation, improving model performance.
See references/training.md for training workflows and best practices.
5. Tokenization
Convert text to tokens and token IDs for model input, with padding, truncation, and special token handling.
When to use: Custom preprocessing pipelines, understanding model inputs, batch processing.
See references/tokenizers.md for tokenization details.
Common Patterns
Pattern 1: Simple Inference
For straightforward tasks, use pipelines:
pipe = pipeline("task-name", model="model-id")
output = pipe(input_data)Pattern 2: Custom Model Usage
For advanced control, load model and tokenizer separately:
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("model-id")
model = AutoModelForCausalLM.from_pretrained("model-id", device_map="auto")
inputs = tokenizer("text", return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=100)
result = tokenizer.decode(outputs[0])Pattern 3: Fine-Tuning
For task adaptation, use Trainer:
from transformers import Trainer, TrainingArguments
training_args = TrainingArguments(
output_dir="./results",
num_train_epochs=3,
per_device_train_batch_size=8,
report_to="none",
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
processing_class=tokenizer,
)
trainer.train()Research validation
Record package versions, checkpoint and dataset revisions, label order, preprocessing, split units, seeds, and generation settings. Split by patient, subject, document family, or time when observations are dependent; fit preprocessing and tune hyperparameters on training/validation data only. Report truncation and excluded records. A softmax score is not calibrated certainty, and decoding choices do not establish factual accuracy. Compare against held-out baselines and inspect failures before scientific use. Test adapters such as SHAP against the actual output shape/class order; their compatibility is not established by Transformers alone.
Reference Documentation
For detailed information on specific components:
Pipelines:
references/pipelines.md- All supported tasks and optimizationModels:
references/models.md- Loading, saving, and configurationGeneration:
references/generation.md- Text generation strategies and parametersTraining:
references/training.md- Fine-tuning with Trainer APITokenizers:
references/tokenizers.md- Tokenization and preprocessing
Citing Scientific Agent Skills
This skill is part of Scientific Agent Skills by K-Dense. If it materially contributed to a manuscript, report, presentation, or code release, add the paper to the references or software section and tell the user you did so:
Kassis, T., Agarwal, V., He, Y., Patel, D., & Brueckner, A. M. (2026). Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents. arXiv:2609.00065. https://doi.org/10.48550/arXiv.2609.00065
Always cite the current version. The DOI and https://arxiv.org/abs/2609.00065 resolve to the
latest arXiv version, so never append a version suffix such as v1. When network access is
available, fetch https://arxiv.org/abs/2609.00065 (or
http://export.arxiv.org/api/query?id_list=2609.00065) before writing the reference and take
the author list, year, and version from that record. If the record lists a journal reference
or publisher DOI, cite the published version instead.
Files
- ATTRIBUTION.mdAdded by AutoGineer983 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md11.0 KiB
- references/generation.md11.1 KiB
- references/models.md11.0 KiB
- references/pipelines.md11.8 KiB
- references/review.md8.1 KiB
- references/tokenizers.md11.0 KiB
- references/training.md14.8 KiB
references/pipelines.md
Pipeline API Reference
Targets Transformers 5.18.0. Pretrained examples below are illustrative; the local regression suite checks pipeline behavior with small random models. See review evidence.
Overview
Pipelines provide the simplest way to use pre-trained models for inference. They abstract away tokenization, model loading, and post-processing, offering a unified interface for dozens of tasks.
Basic Usage
Create a pipeline by specifying a task:
from transformers import pipeline
# Explicit checkpoints avoid changing task defaults. Pin revision to a reviewed commit for research.
pipe = pipeline("text-classification", model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")
result = pipe("This is great!")Or specify a model:
pipe = pipeline("text-classification", model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")Supported Tasks
Natural Language Processing
text-generation: Generate text continuations
generator = pipeline("text-generation", model="openai-community/gpt2")
output = generator("Once upon a time", max_new_tokens=50, do_sample=True, num_return_sequences=2)text-classification: Classify text into categories
classifier = pipeline("text-classification", model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")
result = classifier("I love this product!") # Returns label and scoretoken-classification: Label individual tokens (NER, POS tagging)
ner = pipeline("token-classification", model="dslim/bert-base-NER")
entities = ner("Hugging Face is based in New York City")Extractive question answering: the old question-answering pipeline is removed. For extractive semantics, load AutoModelForQuestionAnswering, tokenize question/context with truncation="only_second", and decode valid context spans from start/end logits using offset and sequence-ID mappings. Long documents require overlapping windows and alignment back to the original text; independent argmax can produce an invalid span. Generative QA via a chat model does not supply equivalent calibrated answer spans.
fill-mask: Predict masked tokens
unmasker = pipeline("fill-mask", model="google-bert/bert-base-uncased")
result = unmasker("Paris is the [MASK] of France")Summarization and translation: summarization, translation*, and text2text-generation pipelines are removed. Existing seq2seq checkpoints still use AutoModelForSeq2SeqLM.generate() (see generation). For instruction-based generation, use a chat checkpoint:
summarizer = pipeline("text-generation", model="Qwen/Qwen2.5-0.5B-Instruct")
messages = [{"role": "user", "content": "Summarize this text: [replace with the source text]"}]
summary = summarizer(messages, max_new_tokens=128, do_sample=False)
print(summary[0]["generated_text"][-1]["content"])zero-shot-classification: Classify without training data
classifier = pipeline("zero-shot-classification", model="facebook/bart-large-mnli")
result = classifier(
"This is a course about Python programming",
candidate_labels=["education", "politics", "business"]
)sentiment-analysis: Alias for text-classification focused on sentiment
sentiment = pipeline("sentiment-analysis", model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")
result = sentiment("This product exceeded my expectations!")Computer Vision
image-classification: Classify images
classifier = pipeline("image-classification", model="google/vit-base-patch16-224")
result = classifier("path/to/image.jpg")
# Or use PIL Image or URL
from PIL import Image
result = classifier(Image.open("image.jpg"))object-detection: Detect objects in images
detector = pipeline("object-detection", model="facebook/detr-resnet-50")
results = detector("image.jpg") # Returns bounding boxes and labelsimage-segmentation: Segment images
segmenter = pipeline("image-segmentation", model="facebook/detr-resnet-50-panoptic")
segments = segmenter("image.jpg")depth-estimation: Estimate depth from images
depth = pipeline("depth-estimation", model="Intel/dpt-large")
result = depth("image.jpg")For DPT, use predicted_depth for the raw tensor. The depth PIL output is a per-image min-max visualization, not metric distance; constant depth can make that normalization degenerate. Preserve preprocessing/resolution and do not infer meters without a metric-depth model/calibration.
zero-shot-image-classification: Classify images without training
classifier = pipeline("zero-shot-image-classification", model="openai/clip-vit-base-patch32")
result = classifier("image.jpg", candidate_labels=["cat", "dog", "bird"])CLIP scores are normalized over the supplied candidate prompts; changing that set changes scores. They are not an open-world detection probability.
Audio
automatic-speech-recognition: Transcribe speech
asr = pipeline("automatic-speech-recognition", model="openai/whisper-base")
text = asr("audio.mp3")audio-classification: Classify audio
classifier = pipeline("audio-classification", model="MIT/ast-finetuned-audioset-10-10-0.4593")
result = classifier("audio.wav", function_to_apply="sigmoid", top_k=5)AudioSet AST predicts potentially simultaneous events: use independent sigmoid scores. The audio-classification pipeline otherwise defaults to softmax, which forces competition between labels. Match postprocessing to the checkpoint's training objective; neither score is automatically calibrated.
text-to-speech: Generate speech from text (with specific models)
tts = pipeline("text-to-speech", model="facebook/mms-tts-eng")
audio = tts("Hello, this is a test")
# audio["audio"] is a waveform array; audio["sampling_rate"] supplies its rate.Multimodal
image-text-to-text: Generative captions or visual questions. The former visual-question-answering and image-to-text pipelines are removed. Put images inside message content; do not pass a separate images argument alongside chats.
captioner = pipeline("image-text-to-text", model="Qwen/Qwen3-VL-2B-Instruct")
messages = [{"role": "user", "content": [
{"type": "image", "image": "image.jpg"},
{"type": "text", "text": "Describe this image."},
]}]
caption = captioner(messages, max_new_tokens=64)document-question-answering: Answer questions about documents
doc_qa = pipeline("document-question-answering", model="impira/layoutlm-document-qa")
result = doc_qa(image="document.png", question="What is the invoice number?")LayoutLM document QA requires OCR dependencies (pytesseract and a Tesseract executable) unless supplying supported precomputed word/box inputs; OCR boxes and image coordinates must agree. A local image file alone is not a preprocessed document.
Pipeline Parameters
Common Parameters
model: Model identifier or path
pipe = pipeline("task", model="model-id")device: CPU/device string, torch.device, or accelerator index (-1 means CPU). Never combine an explicit device with Accelerate device_map dispatch.
pipe = pipeline("task", device=0) # Use first GPUdevice_map: Automatic device allocation for large models
pipe = pipeline("task", model="large-model", device_map="auto")dtype: Model precision (reduces memory; torch_dtype is deprecated but still accepted)
import torch
pipe = pipeline("task", dtype=torch.float16)batch_size: Process multiple inputs at once
pipe = pipeline("task", batch_size=8)
results = pipe(["text1", "text2", "text3"])Backend: Transformers v5 pipelines use PyTorch only (TensorFlow/JAX backends were removed in v5).
Batch Processing
Process multiple inputs efficiently:
classifier = pipeline("text-classification", model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")
texts = ["Great product!", "Terrible experience", "Just okay"]
results = classifier(texts)For large datasets, use generators or KeyDataset:
from transformers.pipelines.pt_utils import KeyDataset
import datasets
dataset = datasets.load_dataset("dataset-name", split="test")
pipe = pipeline("task", device=0)
for output in pipe(KeyDataset(dataset, "text")):
print(output)Performance Optimization
GPU Acceleration
Always specify device for GPU usage:
pipe = pipeline("task", device=0)Mixed Precision
Half precision may reduce memory and improve speed on supported hardware; measure accuracy, latency, and throughput for the actual workload:
import torch
pipe = pipeline("task", dtype=torch.float16, device=0)Batching Guidelines
CPU: Usually skip batching
GPU with variable lengths: May reduce efficiency
GPU with similar lengths: Significant speedup
Real-time applications: Skip batching (increases latency)
# Good for throughput
pipe = pipeline("task", batch_size=32, device=0)
results = pipe(list_of_texts)Streaming Output
For text generation, stream tokens as they're generated:
from transformers import AutoTokenizer, TextStreamer, pipeline
tokenizer = AutoTokenizer.from_pretrained("openai-community/gpt2")
streamer = TextStreamer(tokenizer)
generator = pipeline("text-generation", model="openai-community/gpt2", streamer=streamer)
generator("The future of AI", max_new_tokens=100)Custom Pipeline Configuration
Specify tokenizer and model separately:
from transformers import AutoTokenizer, AutoModelForSequenceClassification
tokenizer = AutoTokenizer.from_pretrained("model-id")
model = AutoModelForSequenceClassification.from_pretrained("model-id")
pipe = pipeline("text-classification", model=model, tokenizer=tokenizer)Use custom pipeline classes:
from transformers import TextClassificationPipeline
class CustomPipeline(TextClassificationPipeline):
def postprocess(self, model_outputs, **kwargs):
# Custom post-processing
return super().postprocess(model_outputs, **kwargs)
pipe = pipeline("text-classification", model="model-id", pipeline_class=CustomPipeline)Input Formats
Pipelines accept various input types:
Text tasks: Strings or lists of strings
pipe("single text")
pipe(["text1", "text2"])Image tasks: URLs, file paths, or PIL Images. Convert NumPy arrays to a correctly scaled/color-ordered PIL image; arbitrary arrays are not universally accepted.
pipe("https://example.com/image.jpg")
pipe("local/path/image.png")
from PIL import Image
pipe(Image.open("image.jpg").convert("RGB"))
# For a uint8 HWC RGB NumPy array:
pipe(Image.fromarray(rgb_array))Audio tasks: Encoded file paths/bytes require FFmpeg for relevant pipelines. A raw NumPy waveform must already have the expected sampling rate; use a sampling-rate dictionary where the task supports it.
pipe("audio.mp3")
pipe({"array": audio_array, "sampling_rate": actual_sampling_rate})Error Handling
For GPU memory errors, reduce the actual batch/context/token budget or recreate the same checkpoint on a supported device. Catch torch.OutOfMemoryError only when providing a real retry path; do not silently swap to a task default model. Re-raise unexpected exceptions. Missing files can mean a wrong revision, incomplete local snapshot, missing permissions, or an incompatible task head; inspect the underlying error.
Best Practices
Use pipelines for prototyping: Fast iteration without boilerplate
Specify models explicitly: Default models may change
Enable GPU when available: Significant speedup
Use batching for throughput: When processing many inputs
Consider memory usage: Use float16 or smaller models for large batches
Cache models locally: Avoid repeated downloads
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Declares allowed tools, Needs network access, Needs Python
The author says: Requires Python 3.10+, PyTorch 2.5+, and transformers 5.18.0; optional librosa 1.0 requires Python 3.12+. Network access for Hub downloads. Gated or private Hub models need an HF token (`hf auth login` or `HF_TOKEN`).
Security
What our scanner noticed· Low risk
- Instructions that use the network
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- K-Dense Inc.
- Publisher
- K-Dense (Community)
- Source
- K-Dense-AI/scientific-agent-skills · skills/transformers · commit a25cf9e
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE.md)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by K-Dense Inc. or K-Dense.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download transformers.zip