mirror of
https://github.com/KohakuBlueleaf/KohakuHub.git
synced 2026-07-15 18:25:09 -05:00
4.2 KiB
4.2 KiB
title, description, icon
| title | description | icon |
|---|---|---|
| LFS Configuration | Git LFS integration with flexible per-repository settings | i-carbon-data-volume |
LFS (Large File Storage) Configuration
Git LFS integration with flexible per-repository settings.
Overview
Automatic LFS handling:
- Files ≥5MB → LFS by default
- Or specific file extensions → Always LFS
- Configurable per-repository
- Server-wide defaults + repo overrides
Server Defaults
Environment variables:
KOHAKU_HUB_LFS_THRESHOLD_BYTES: 5000000 # 5MB (decimal: 1MB = 1,000,000)
KOHAKU_HUB_LFS_KEEP_VERSIONS: 5 # Keep last 5 versions
KOHAKU_HUB_LFS_AUTO_GC: false # Manual GC only
32 default suffix rules (always use LFS):
ML Models:
- .safetensors, .bin, .pt, .pth, .ckpt
- .onnx, .pb, .h5, .tflite
- .gguf, .ggml, .msgpack
Archives:
- .zip, .tar, .gz, .bz2, .xz, .7z, .rar
Data:
- .npy, .npz, .arrow, .parquet
Media:
- .mp4, .avi, .mkv, .mov
- .wav, .mp3, .flac
- .tiff, .tif
Per-Repository Settings
Override server defaults:
Via Web UI
- Navigate to repo → Settings
- Scroll to LFS Settings
- Configure:
- Threshold - Size in bytes (null = use server default)
- Keep Versions - How many versions to keep (null = server default)
- Suffix Rules - Additional extensions (supplements server defaults)
Via CLI
# Set custom threshold (10MB)
kohub-cli settings repo lfs threshold username/repo --threshold 10000000
# Reset to server default
kohub-cli settings repo lfs threshold username/repo --reset
# Set keep versions
kohub-cli settings repo lfs versions username/repo --count 10
# Add suffix rules
kohub-cli settings repo lfs suffix username/repo --add .custom --add .special
# Remove suffix rule
kohub-cli settings repo lfs suffix username/repo --remove .custom
# Clear all custom rules (keep server defaults)
kohub-cli settings repo lfs suffix username/repo --clear
Via API
# Get LFS settings
curl http://localhost:28080/api/models/username/repo/settings/lfs
# Update settings
curl -X PUT http://localhost:28080/api/models/username/repo/settings \\
-d '{
"lfs_threshold_bytes": 10000000,
"lfs_keep_versions": 10,
"lfs_suffix_rules": [".safetensors", ".custom"]
}'
How LFS Works
Upload Flow
Small file (<threshold, not in suffix rules):
- Client → Base64 encode
- Include in commit payload
- LakeFS → Store in S3
Large file (≥threshold OR in suffix rules):
- Client → Request presigned URL
- Upload directly to S3
- Server links object to LakeFS
Download Flow
All files:
- Client requests file
- Server → 302 redirect to S3 presigned URL
- Client downloads directly from S3
Git clone:
- Files <1MB → Included in pack
- Files ≥1MB → LFS pointers
- Run
git lfs pullto download large files
Garbage Collection
Keep versions setting:
- Keeps last N versions of each file
- Older versions marked for deletion
- Manual GC via admin API
Manual GC:
# Via admin API
curl -X POST http://localhost:28080/admin/api/repositories/model/username/repo/gc \\
-H "X-Admin-Token: admin_token"
Auto GC:
KOHAKU_HUB_LFS_AUTO_GC: true # Runs on every commit (careful!)
Best Practices
Threshold:
- 5MB good default (accounts for base64 overhead)
- Lower for many small files
- Higher if network is slow
Suffix rules:
- Use for files that should ALWAYS use LFS
.safetensors,.ggufalways LFS regardless of size- Add custom formats as needed
Keep versions:
- 5-10 good for active development
- Higher for critical models
- Lower to save storage
Warnings:
- Setting keep_versions <2 breaks revert operations!
- Auto GC on commit can be slow
- Manual GC recommended
Troubleshooting
Files not using LFS:
- Check threshold settings
- Verify suffix rules
- Check file actually meets criteria
LFS download fails:
- Install git-lfs:
git lfs install - Pull:
git lfs pull - Check .lfsconfig in repo
Storage growing:
- Old LFS versions not cleaned
- Run manual GC
- Check keep_versions setting
See also: Quota Management, Configuration Reference