Quick Start Guide
This guide will help you get started with UAL Adapter in minutes.
Basic Workflow
The typical UAL Adapter workflow consists of three main steps:
Train a LoRA adapter on your source model
Export the adapter to AIR format
Import and use the adapter on a different target model
Step 1: Train an Adapter
First, train a LoRA adapter on your source model:
from ual_adapter import UniversalAdapter
from transformers import AutoModel, AutoTokenizer
# Load source model (e.g., GPT-2)
model = AutoModel.from_pretrained("gpt2")
tokenizer = AutoTokenizer.from_pretrained("gpt2")
# Create adapter
ual = UniversalAdapter(model, tokenizer)
# Prepare training data
training_texts = [
"Your training text here...",
"More training examples...",
# ... more texts
]
# Train domain-specific adapter
ual.train_adapter(
domain_name="medical",
texts=training_texts,
rank=16,
alpha=32,
epochs=3,
batch_size=4
)
Step 2: Export to AIR Format
Export your trained adapter to a portable AIR file:
# Export adapter
ual.export_adapter("medical", "medical_adapter.air")
The AIR format is architecture-agnostic and can be transferred to any supported model.
Step 3: Transfer to Target Model
Import the adapter into a different model architecture:
from transformers import AutoModel
# Load target model (e.g., LLaMA)
target_model = AutoModel.from_pretrained("TinyLlama/TinyLlama-1.1B")
target_tokenizer = AutoTokenizer.from_pretrained("TinyLlama/TinyLlama-1.1B")
# Create adapter for target model
target_ual = UniversalAdapter(target_model, target_tokenizer)
# Import AIR adapter
target_ual.import_adapter("medical_adapter.air")
# Use the adapted model
outputs = target_model(**tokenizer("Medical query here", return_tensors="pt"))
Multi-Domain Dispatcher
For advanced use cases with multiple domains:
from ual_adapter import LoRADispatcher
# Create dispatcher
dispatcher = LoRADispatcher(
base_model=target_model,
tokenizer=target_tokenizer,
encoder_model="all-MiniLM-L6-v2"
)
# Register multiple domain adapters
dispatcher.register_domain(
domain_name="medical",
adapter_path="medical_adapter.air",
examples=[
"What are the symptoms of diabetes?",
"How does insulin work?",
# ... more medical examples
]
)
dispatcher.register_domain(
domain_name="legal",
adapter_path="legal_adapter.air",
examples=[
"What is contract law?",
"Explain liability clauses.",
# ... more legal examples
]
)
# Train router
dispatcher.train_router()
# Automatic domain routing
response = dispatcher.generate(
"What are the side effects of aspirin?",
max_length=100
)
Command-Line Interface
UAL Adapter provides a CLI for common operations:
Train an adapter:
ual-adapter train \\
--model gpt2 \\
--data training_data.txt \\
--domain medical \\
--output medical_adapter.air
Transfer an adapter:
ual-adapter transfer \\
--source medical_adapter.air \\
--target-model TinyLlama/TinyLlama-1.1B \\
--output medical_llama.air
Use dispatcher:
ual-adapter dispatch \\
--model TinyLlama/TinyLlama-1.1B \\
--domains medical:medical.air legal:legal.air \\
--query "What is informed consent?"
Next Steps
Read the Architecture Overview guide to understand how UAL works
Explore Tutorials for detailed examples
Check UniversalAdapter for the complete API reference
Learn about AIR Format Specification for technical details