Metadata-Version: 2.4
Name: unsloth
Version: 2026.8.21
Summary: 2-5X faster training, reinforcement learning & finetuning
Author: Unsloth AI team
Author-email: info@unsloth.ai
Maintainer-email: Daniel Han <daniel@unsloth.ai>, Michael Han <info@unsloth.ai>
License-Expression: Apache-2.0
Project-URL: homepage, https://unsloth.ai
Project-URL: documentation, https://unsloth.ai/docs
Project-URL: repository, https://github.com/unslothai/unsloth
Keywords: ai,llm,reinforcement learning,machine learning,artificial intelligence,pytorch
Classifier: Programming Language :: Python
Classifier: Environment :: GPU
Classifier: Environment :: GPU :: NVIDIA CUDA
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: <3.15,>=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: COPYING
Requires-Dist: unsloth_zoo>=2026.8.15
Requires-Dist: wheel>=0.42.0
Requires-Dist: packaging
Requires-Dist: torch<2.12.0,>=2.4.0
Requires-Dist: torchvision
Requires-Dist: numpy
Requires-Dist: tqdm
Requires-Dist: psutil
Requires-Dist: tyro
Requires-Dist: protobuf
Requires-Dist: xformers>=0.0.27.post2; ("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5
Requires-Dist: triton>=3.0.0; "linux" in sys_platform
Requires-Dist: triton-windows; sys_platform == "win32" and (platform_machine == "AMD64" or platform_machine == "x86_64")
Requires-Dist: sentencepiece>=0.2.0
Requires-Dist: datasets!=4.0.*,!=4.1.0,<4.4.0,>=3.4.1
Requires-Dist: accelerate>=0.34.1
Requires-Dist: peft!=0.11.0,>=0.18.0
Requires-Dist: huggingface_hub>=0.34.0
Requires-Dist: hf_transfer
Requires-Dist: diffusers
Requires-Dist: transformers!=4.52.0,!=4.52.1,!=4.52.2,!=4.52.3,!=4.53.0,!=4.54.0,!=4.55.0,!=4.55.1,!=4.57.0,!=4.57.4,!=4.57.5,!=5.0.0,!=5.1.0,<=5.5.0,>=4.51.3
Requires-Dist: trl!=0.19.0,<=0.24.0,>=0.18.2
Requires-Dist: typer>=0.12.0
Requires-Dist: pydantic
Requires-Dist: pyyaml
Requires-Dist: nest-asyncio
Requires-Dist: huggingface-hub>=0.34.0
Requires-Dist: structlog>=24.1.0
Requires-Dist: click>=8.0
Requires-Dist: rich
Provides-Extra: studio
Requires-Dist: typer==0.27.1; python_version >= "3.10" and extra == "studio"
Requires-Dist: typer==0.23.2; python_version < "3.10" and extra == "studio"
Requires-Dist: fastapi==0.141.1; python_version >= "3.10" and extra == "studio"
Requires-Dist: fastapi==0.128.8; python_version < "3.10" and extra == "studio"
Requires-Dist: uvicorn==0.52.1; python_version >= "3.10" and extra == "studio"
Requires-Dist: uvicorn==0.39.0; python_version < "3.10" and extra == "studio"
Requires-Dist: pydantic==2.13.4; extra == "studio"
Requires-Dist: packaging==26.3; extra == "studio"
Requires-Dist: matplotlib==3.10.9; extra == "studio"
Requires-Dist: pandas==2.3.3; extra == "studio"
Requires-Dist: nest_asyncio==1.6.0; extra == "studio"
Requires-Dist: datasets==4.3.0; extra == "studio"
Requires-Dist: pyjwt==2.13.0; extra == "studio"
Requires-Dist: huggingface-hub<2.0,>=1.23.0; python_version >= "3.10" and extra == "studio"
Requires-Dist: huggingface-hub==0.36.2; python_version < "3.10" and extra == "studio"
Requires-Dist: urllib3>=2.3.0; extra == "studio"
Requires-Dist: structlog>=24.1.0; extra == "studio"
Requires-Dist: diceware==1.0.1; extra == "studio"
Requires-Dist: ddgs==9.14.4; python_version >= "3.10" and extra == "studio"
Requires-Dist: ddgs==9.8.0; python_version < "3.10" and extra == "studio"
Requires-Dist: cryptography>=42.0.0; extra == "studio"
Requires-Dist: boto3>=1.34.0; extra == "studio"
Requires-Dist: httpx>=0.27.0; extra == "studio"
Requires-Dist: fastmcp>=3.0.2; extra == "studio"
Requires-Dist: gguf==0.19.0; python_version >= "3.10" and extra == "studio"
Requires-Dist: gguf==0.18.0; python_version < "3.10" and extra == "studio"
Requires-Dist: av>=12.0.0; extra == "studio"
Requires-Dist: sqlite-vec==0.1.9; extra == "studio"
Requires-Dist: pymupdf==1.27.2.3; extra == "studio"
Requires-Dist: pymupdf4llm==0.3.4; extra == "studio"
Requires-Dist: python-docx==1.2.0; extra == "studio"
Provides-Extra: triton
Requires-Dist: triton>=3.0.0; "linux" in sys_platform and extra == "triton"
Requires-Dist: triton-windows; (sys_platform == "win32" and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "triton"
Provides-Extra: huggingface
Requires-Dist: unsloth_zoo>=2026.8.15; extra == "huggingface"
Requires-Dist: wheel>=0.42.0; extra == "huggingface"
Requires-Dist: packaging; extra == "huggingface"
Requires-Dist: torchvision; extra == "huggingface"
Requires-Dist: numpy; extra == "huggingface"
Requires-Dist: tqdm; extra == "huggingface"
Requires-Dist: psutil; extra == "huggingface"
Requires-Dist: tyro; extra == "huggingface"
Requires-Dist: protobuf; extra == "huggingface"
Requires-Dist: sentencepiece>=0.2.0; extra == "huggingface"
Requires-Dist: datasets!=4.0.*,!=4.1.0,<4.4.0,>=3.4.1; extra == "huggingface"
Requires-Dist: accelerate>=0.34.1; extra == "huggingface"
Requires-Dist: peft!=0.11.0,>=0.18.0; extra == "huggingface"
Requires-Dist: huggingface_hub>=0.34.0; extra == "huggingface"
Requires-Dist: hf_transfer; extra == "huggingface"
Requires-Dist: diffusers; extra == "huggingface"
Requires-Dist: transformers!=4.52.0,!=4.52.1,!=4.52.2,!=4.52.3,!=4.53.0,!=4.54.0,!=4.55.0,!=4.55.1,!=4.57.0,!=4.57.4,!=4.57.5,!=5.0.0,!=5.1.0,<=5.5.0,>=4.51.3; extra == "huggingface"
Requires-Dist: trl!=0.19.0,<=0.24.0,>=0.18.2; extra == "huggingface"
Requires-Dist: sentence-transformers; extra == "huggingface"
Requires-Dist: typer>=0.12.0; extra == "huggingface"
Requires-Dist: pydantic; extra == "huggingface"
Requires-Dist: pyyaml; extra == "huggingface"
Requires-Dist: nest-asyncio; extra == "huggingface"
Provides-Extra: huggingfacenotorch
Requires-Dist: unsloth_zoo>=2026.8.15; extra == "huggingfacenotorch"
Requires-Dist: wheel>=0.42.0; extra == "huggingfacenotorch"
Requires-Dist: packaging; extra == "huggingfacenotorch"
Requires-Dist: numpy; extra == "huggingfacenotorch"
Requires-Dist: tqdm; extra == "huggingfacenotorch"
Requires-Dist: psutil; extra == "huggingfacenotorch"
Requires-Dist: tyro; extra == "huggingfacenotorch"
Requires-Dist: protobuf; extra == "huggingfacenotorch"
Requires-Dist: sentencepiece>=0.2.0; extra == "huggingfacenotorch"
Requires-Dist: datasets!=4.0.*,!=4.1.0,<4.4.0,>=3.4.1; extra == "huggingfacenotorch"
Requires-Dist: accelerate>=0.34.1; extra == "huggingfacenotorch"
Requires-Dist: peft!=0.11.0,>=0.18.0; extra == "huggingfacenotorch"
Requires-Dist: huggingface_hub>=0.34.0; extra == "huggingfacenotorch"
Requires-Dist: hf_transfer; extra == "huggingfacenotorch"
Requires-Dist: diffusers>=0.39.0; python_version >= "3.10" and extra == "huggingfacenotorch"
Requires-Dist: diffusers; python_version < "3.10" and extra == "huggingfacenotorch"
Requires-Dist: transformers!=4.52.0,!=4.52.1,!=4.52.2,!=4.52.3,!=4.53.0,!=4.54.0,!=4.55.0,!=4.55.1,!=4.57.0,!=4.57.4,!=4.57.5,!=5.0.0,!=5.1.0,<=5.5.0,>=4.51.3; extra == "huggingfacenotorch"
Requires-Dist: trl!=0.19.0,<=0.24.0,>=0.18.2; extra == "huggingfacenotorch"
Requires-Dist: sentence-transformers; extra == "huggingfacenotorch"
Provides-Extra: amd
Requires-Dist: unsloth[huggingfacenotorch]; extra == "amd"
Requires-Dist: bitsandbytes>=0.50.0; ("linux" in sys_platform and (platform_machine == "AMD64" or platform_machine == "x86_64" or platform_machine == "aarch64")) and extra == "amd"
Requires-Dist: bitsandbytes>=0.50.0; (sys_platform == "win32" and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "amd"
Requires-Dist: unsloth_zoo>=2026.8.15; extra == "amd"
Requires-Dist: torchvision; extra == "amd"
Requires-Dist: unsloth[triton]; extra == "amd"
Provides-Extra: windows
Requires-Dist: unsloth[huggingface]; extra == "windows"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; sys_platform == "win32" and extra == "windows"
Requires-Dist: xformers>=0.0.22.post7; sys_platform == "win32" and extra == "windows"
Provides-Extra: base
Requires-Dist: unsloth[huggingface]; extra == "base"
Provides-Extra: cu118only
Requires-Dist: xformers==0.0.22.post7; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu118only"
Provides-Extra: cu121only
Requires-Dist: xformers==0.0.22.post7; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu121only"
Provides-Extra: cu118onlytorch211
Requires-Dist: xformers==0.0.23; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu118onlytorch211"
Provides-Extra: cu121onlytorch211
Requires-Dist: xformers==0.0.23; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu121onlytorch211"
Provides-Extra: cu118onlytorch212
Requires-Dist: xformers==0.0.23.post1; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu118onlytorch212"
Provides-Extra: cu121onlytorch212
Requires-Dist: xformers==0.0.23.post1; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu121onlytorch212"
Provides-Extra: cu118onlytorch220
Requires-Dist: xformers==0.0.24; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu118onlytorch220"
Provides-Extra: cu121onlytorch220
Requires-Dist: xformers==0.0.24; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu121onlytorch220"
Provides-Extra: cu118onlytorch230
Requires-Dist: xformers==0.0.27; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu118onlytorch230"
Provides-Extra: cu121onlytorch230
Requires-Dist: xformers==0.0.27; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu121onlytorch230"
Provides-Extra: cu118onlytorch240
Requires-Dist: xformers==0.0.27.post2; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu118onlytorch240"
Provides-Extra: cu121onlytorch240
Requires-Dist: xformers==0.0.27.post2; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu121onlytorch240"
Provides-Extra: cu124onlytorch240
Requires-Dist: xformers==0.0.28.post1; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu124onlytorch240"
Provides-Extra: cu118onlytorch250
Requires-Dist: xformers==0.0.28.post2; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu118onlytorch250"
Provides-Extra: cu121onlytorch250
Requires-Dist: xformers==0.0.28.post2; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu121onlytorch250"
Provides-Extra: cu124onlytorch250
Requires-Dist: xformers==0.0.28.post2; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu124onlytorch250"
Provides-Extra: cu118onlytorch251
Requires-Dist: xformers==0.0.29.post1; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu118onlytorch251"
Provides-Extra: cu121onlytorch251
Requires-Dist: xformers==0.0.29.post1; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu121onlytorch251"
Provides-Extra: cu124onlytorch251
Requires-Dist: xformers==0.0.29.post1; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu124onlytorch251"
Provides-Extra: cu118onlytorch260
Requires-Dist: xformers==0.0.29.post3; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu118onlytorch260"
Provides-Extra: cu124onlytorch260
Requires-Dist: xformers==0.0.29.post3; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu124onlytorch260"
Provides-Extra: cu126onlytorch260
Requires-Dist: xformers==0.0.29.post3; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu126onlytorch260"
Provides-Extra: cu118onlytorch270
Requires-Dist: xformers==0.0.30; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu118onlytorch270"
Provides-Extra: cu126onlytorch270
Requires-Dist: xformers==0.0.30; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu126onlytorch270"
Provides-Extra: cu128onlytorch270
Requires-Dist: xformers==0.0.30; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu128onlytorch270"
Provides-Extra: cu118onlytorch271
Requires-Dist: xformers==0.0.31.post1; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu118onlytorch271"
Provides-Extra: cu126onlytorch271
Requires-Dist: xformers==0.0.31.post1; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu126onlytorch271"
Provides-Extra: cu128onlytorch271
Requires-Dist: xformers==0.0.31.post1; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu128onlytorch271"
Provides-Extra: cu118onlytorch280
Requires-Dist: xformers==0.0.32.post2; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu118onlytorch280"
Provides-Extra: cu126onlytorch280
Requires-Dist: xformers==0.0.32.post2; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu126onlytorch280"
Provides-Extra: cu128onlytorch280
Requires-Dist: xformers==0.0.32.post2; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu128onlytorch280"
Provides-Extra: cu130onlytorch280
Provides-Extra: cu126onlytorch290
Requires-Dist: xformers==0.0.33.post1; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu126onlytorch290"
Provides-Extra: cu128onlytorch290
Requires-Dist: xformers==0.0.33.post1; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu128onlytorch290"
Provides-Extra: cu130onlytorch290
Requires-Dist: xformers==0.0.33.post1; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu130onlytorch290"
Provides-Extra: cu126onlytorch291
Requires-Dist: xformers==0.0.33.post2; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu126onlytorch291"
Provides-Extra: cu128onlytorch291
Requires-Dist: xformers==0.0.33.post2; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu128onlytorch291"
Provides-Extra: cu130onlytorch291
Requires-Dist: xformers==0.0.33.post2; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu130onlytorch291"
Provides-Extra: cu126onlytorch2100
Requires-Dist: xformers==0.0.34; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu126onlytorch2100"
Provides-Extra: cu128onlytorch2100
Requires-Dist: xformers==0.0.34; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu128onlytorch2100"
Provides-Extra: cu130onlytorch2100
Requires-Dist: xformers==0.0.34; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "cu130onlytorch2100"
Provides-Extra: cu118
Requires-Dist: unsloth[huggingface]; extra == "cu118"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118"
Requires-Dist: unsloth[cu118only]; extra == "cu118"
Provides-Extra: cu121
Requires-Dist: unsloth[huggingface]; extra == "cu121"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu121"
Requires-Dist: unsloth[cu121only]; extra == "cu121"
Provides-Extra: cu118-torch211
Requires-Dist: unsloth[huggingface]; extra == "cu118-torch211"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-torch211"
Requires-Dist: unsloth[cu118onlytorch211]; extra == "cu118-torch211"
Provides-Extra: cu121-torch211
Requires-Dist: unsloth[huggingface]; extra == "cu121-torch211"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu121-torch211"
Requires-Dist: unsloth[cu121onlytorch211]; extra == "cu121-torch211"
Provides-Extra: cu118-torch212
Requires-Dist: unsloth[huggingface]; extra == "cu118-torch212"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-torch212"
Requires-Dist: unsloth[cu118onlytorch212]; extra == "cu118-torch212"
Provides-Extra: cu121-torch212
Requires-Dist: unsloth[huggingface]; extra == "cu121-torch212"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu121-torch212"
Requires-Dist: unsloth[cu121onlytorch212]; extra == "cu121-torch212"
Provides-Extra: cu118-torch220
Requires-Dist: unsloth[huggingface]; extra == "cu118-torch220"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-torch220"
Requires-Dist: unsloth[cu118onlytorch220]; extra == "cu118-torch220"
Provides-Extra: cu121-torch220
Requires-Dist: unsloth[huggingface]; extra == "cu121-torch220"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu121-torch220"
Requires-Dist: unsloth[cu121onlytorch220]; extra == "cu121-torch220"
Provides-Extra: cu118-torch230
Requires-Dist: unsloth[huggingface]; extra == "cu118-torch230"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-torch230"
Requires-Dist: unsloth[cu118onlytorch230]; extra == "cu118-torch230"
Provides-Extra: cu121-torch230
Requires-Dist: unsloth[huggingface]; extra == "cu121-torch230"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu121-torch230"
Requires-Dist: unsloth[cu121onlytorch230]; extra == "cu121-torch230"
Provides-Extra: cu118-torch240
Requires-Dist: unsloth[huggingface]; extra == "cu118-torch240"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-torch240"
Requires-Dist: unsloth[cu118onlytorch240]; extra == "cu118-torch240"
Provides-Extra: cu121-torch240
Requires-Dist: unsloth[huggingface]; extra == "cu121-torch240"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu121-torch240"
Requires-Dist: unsloth[cu121onlytorch240]; extra == "cu121-torch240"
Provides-Extra: cu124-torch240
Requires-Dist: unsloth[huggingface]; extra == "cu124-torch240"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu124-torch240"
Requires-Dist: unsloth[cu124onlytorch240]; extra == "cu124-torch240"
Provides-Extra: cu118-torch250
Requires-Dist: unsloth[huggingface]; extra == "cu118-torch250"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-torch250"
Requires-Dist: unsloth[cu118onlytorch250]; extra == "cu118-torch250"
Provides-Extra: cu121-torch250
Requires-Dist: unsloth[huggingface]; extra == "cu121-torch250"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu121-torch250"
Requires-Dist: unsloth[cu121onlytorch250]; extra == "cu121-torch250"
Provides-Extra: cu124-torch250
Requires-Dist: unsloth[huggingface]; extra == "cu124-torch250"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu124-torch250"
Requires-Dist: unsloth[cu124onlytorch250]; extra == "cu124-torch250"
Provides-Extra: cu118-torch251
Requires-Dist: unsloth[huggingface]; extra == "cu118-torch251"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-torch251"
Requires-Dist: unsloth[cu118onlytorch251]; extra == "cu118-torch251"
Provides-Extra: cu121-torch251
Requires-Dist: unsloth[huggingface]; extra == "cu121-torch251"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu121-torch251"
Requires-Dist: unsloth[cu121onlytorch251]; extra == "cu121-torch251"
Provides-Extra: cu124-torch251
Requires-Dist: unsloth[huggingface]; extra == "cu124-torch251"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu124-torch251"
Requires-Dist: unsloth[cu124onlytorch251]; extra == "cu124-torch251"
Provides-Extra: cu118-torch260
Requires-Dist: unsloth[huggingface]; extra == "cu118-torch260"
Requires-Dist: bitsandbytes>=0.45.1; extra == "cu118-torch260"
Requires-Dist: unsloth[cu118onlytorch260]; extra == "cu118-torch260"
Provides-Extra: cu124-torch260
Requires-Dist: unsloth[huggingface]; extra == "cu124-torch260"
Requires-Dist: bitsandbytes>=0.45.1; extra == "cu124-torch260"
Requires-Dist: unsloth[cu124onlytorch260]; extra == "cu124-torch260"
Provides-Extra: cu126-torch260
Requires-Dist: unsloth[huggingface]; extra == "cu126-torch260"
Requires-Dist: bitsandbytes>=0.45.1; extra == "cu126-torch260"
Requires-Dist: unsloth[cu126onlytorch260]; extra == "cu126-torch260"
Provides-Extra: cu118-torch270
Requires-Dist: unsloth[huggingface]; extra == "cu118-torch270"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-torch270"
Requires-Dist: unsloth[cu118onlytorch270]; extra == "cu118-torch270"
Provides-Extra: cu126-torch270
Requires-Dist: unsloth[huggingface]; extra == "cu126-torch270"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu126-torch270"
Requires-Dist: unsloth[cu126onlytorch270]; extra == "cu126-torch270"
Provides-Extra: cu128-torch270
Requires-Dist: unsloth[huggingface]; extra == "cu128-torch270"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu128-torch270"
Requires-Dist: unsloth[cu128onlytorch270]; extra == "cu128-torch270"
Provides-Extra: cu118-torch271
Requires-Dist: unsloth[huggingface]; extra == "cu118-torch271"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-torch271"
Requires-Dist: unsloth[cu118onlytorch271]; extra == "cu118-torch271"
Provides-Extra: cu126-torch271
Requires-Dist: unsloth[huggingface]; extra == "cu126-torch271"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu126-torch271"
Requires-Dist: unsloth[cu126onlytorch271]; extra == "cu126-torch271"
Provides-Extra: cu128-torch271
Requires-Dist: unsloth[huggingface]; extra == "cu128-torch271"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu128-torch271"
Requires-Dist: unsloth[cu128onlytorch271]; extra == "cu128-torch271"
Provides-Extra: cu118-torch280
Requires-Dist: unsloth[huggingface]; extra == "cu118-torch280"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-torch280"
Requires-Dist: unsloth[cu118onlytorch280]; extra == "cu118-torch280"
Provides-Extra: cu126-torch280
Requires-Dist: unsloth[huggingface]; extra == "cu126-torch280"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu126-torch280"
Requires-Dist: unsloth[cu126onlytorch280]; extra == "cu126-torch280"
Provides-Extra: cu128-torch280
Requires-Dist: unsloth[huggingface]; extra == "cu128-torch280"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu128-torch280"
Requires-Dist: unsloth[cu128onlytorch280]; extra == "cu128-torch280"
Provides-Extra: cu130-torch280
Requires-Dist: unsloth[huggingface]; extra == "cu130-torch280"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu130-torch280"
Requires-Dist: unsloth[cu130onlytorch280]; extra == "cu130-torch280"
Provides-Extra: cu126-torch290
Requires-Dist: unsloth[huggingface]; extra == "cu126-torch290"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu126-torch290"
Requires-Dist: unsloth[cu126onlytorch290]; extra == "cu126-torch290"
Provides-Extra: cu128-torch290
Requires-Dist: unsloth[huggingface]; extra == "cu128-torch290"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu128-torch290"
Requires-Dist: unsloth[cu128onlytorch290]; extra == "cu128-torch290"
Provides-Extra: cu130-torch290
Requires-Dist: unsloth[huggingface]; extra == "cu130-torch290"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu130-torch290"
Requires-Dist: unsloth[cu130onlytorch290]; extra == "cu130-torch290"
Provides-Extra: cu126-torch291
Requires-Dist: unsloth[huggingface]; extra == "cu126-torch291"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu126-torch291"
Requires-Dist: unsloth[cu126onlytorch291]; extra == "cu126-torch291"
Provides-Extra: cu128-torch291
Requires-Dist: unsloth[huggingface]; extra == "cu128-torch291"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu128-torch291"
Requires-Dist: unsloth[cu128onlytorch291]; extra == "cu128-torch291"
Provides-Extra: cu130-torch291
Requires-Dist: unsloth[huggingface]; extra == "cu130-torch291"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu130-torch291"
Requires-Dist: unsloth[cu130onlytorch291]; extra == "cu130-torch291"
Provides-Extra: cu126-torch2100
Requires-Dist: unsloth[huggingface]; extra == "cu126-torch2100"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu126-torch2100"
Requires-Dist: unsloth[cu126onlytorch2100]; extra == "cu126-torch2100"
Requires-Dist: unsloth[audio-torch210]; extra == "cu126-torch2100"
Provides-Extra: cu128-torch2100
Requires-Dist: unsloth[huggingface]; extra == "cu128-torch2100"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu128-torch2100"
Requires-Dist: unsloth[cu128onlytorch2100]; extra == "cu128-torch2100"
Requires-Dist: unsloth[audio-torch210]; extra == "cu128-torch2100"
Provides-Extra: cu130-torch2100
Requires-Dist: unsloth[huggingface]; extra == "cu130-torch2100"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu130-torch2100"
Requires-Dist: unsloth[cu130onlytorch2100]; extra == "cu130-torch2100"
Requires-Dist: unsloth[audio-torch210]; extra == "cu130-torch2100"
Provides-Extra: kaggle
Requires-Dist: unsloth[huggingface]; extra == "kaggle"
Provides-Extra: kaggle-new
Requires-Dist: unsloth[huggingface]; extra == "kaggle-new"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "kaggle-new"
Provides-Extra: conda
Requires-Dist: unsloth[huggingface]; extra == "conda"
Provides-Extra: colab-torch211
Requires-Dist: unsloth[huggingface]; extra == "colab-torch211"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "colab-torch211"
Requires-Dist: unsloth[cu121onlytorch211]; extra == "colab-torch211"
Provides-Extra: flashattention
Requires-Dist: packaging; "linux" in sys_platform and extra == "flashattention"
Requires-Dist: ninja; "linux" in sys_platform and extra == "flashattention"
Requires-Dist: flash-attn>=2.6.3; "linux" in sys_platform and extra == "flashattention"
Provides-Extra: audio-torch280
Requires-Dist: torchcodec<0.8.0,>=0.6.0; (python_version >= "3.9" and (((sys_platform == "linux" or sys_platform == "win32") and (platform_machine == "x86_64" or platform_machine == "AMD64")) or (sys_platform == "darwin" and platform_machine == "arm64"))) and extra == "audio-torch280"
Provides-Extra: audio-torch290
Requires-Dist: torchcodec<0.10.0,>=0.8.0; (python_version >= "3.10" and (((sys_platform == "linux" or sys_platform == "win32") and (platform_machine == "x86_64" or platform_machine == "AMD64")) or (sys_platform == "darwin" and platform_machine == "arm64"))) and extra == "audio-torch290"
Provides-Extra: audio-torch210
Requires-Dist: torchcodec<0.11.0,>=0.10.0; (python_version >= "3.10" and (((sys_platform == "linux" or sys_platform == "win32") and (platform_machine == "x86_64" or platform_machine == "AMD64")) or (sys_platform == "darwin" and platform_machine == "arm64"))) and extra == "audio-torch210"
Provides-Extra: colab-ampere-torch211
Requires-Dist: unsloth[huggingface]; extra == "colab-ampere-torch211"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "colab-ampere-torch211"
Requires-Dist: unsloth[cu121onlytorch211]; extra == "colab-ampere-torch211"
Requires-Dist: unsloth[flashattention]; extra == "colab-ampere-torch211"
Provides-Extra: colab-torch220
Requires-Dist: unsloth[huggingface]; extra == "colab-torch220"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "colab-torch220"
Requires-Dist: unsloth[cu121onlytorch220]; extra == "colab-torch220"
Provides-Extra: colab-ampere-torch220
Requires-Dist: unsloth[huggingface]; extra == "colab-ampere-torch220"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "colab-ampere-torch220"
Requires-Dist: unsloth[cu121onlytorch220]; extra == "colab-ampere-torch220"
Requires-Dist: unsloth[flashattention]; extra == "colab-ampere-torch220"
Provides-Extra: colab-new
Requires-Dist: unsloth_zoo>=2026.8.15; extra == "colab-new"
Requires-Dist: packaging; extra == "colab-new"
Requires-Dist: tyro; extra == "colab-new"
Requires-Dist: transformers!=4.52.0,!=4.52.1,!=4.52.2,!=4.52.3,!=4.53.0,!=4.54.0,!=4.55.0,!=4.55.1,!=4.57.0,!=4.57.4,!=4.57.5,!=5.0.0,!=5.1.0,<=5.5.0,>=4.51.3; extra == "colab-new"
Requires-Dist: datasets!=4.0.*,!=4.1.0,<4.4.0,>=3.4.1; extra == "colab-new"
Requires-Dist: sentencepiece>=0.2.0; extra == "colab-new"
Requires-Dist: tqdm; extra == "colab-new"
Requires-Dist: psutil; extra == "colab-new"
Requires-Dist: wheel>=0.42.0; extra == "colab-new"
Requires-Dist: numpy; extra == "colab-new"
Requires-Dist: protobuf; extra == "colab-new"
Requires-Dist: huggingface_hub>=0.34.0; extra == "colab-new"
Requires-Dist: hf_transfer; extra == "colab-new"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "colab-new"
Requires-Dist: unsloth[triton]; extra == "colab-new"
Requires-Dist: sentence-transformers; extra == "colab-new"
Requires-Dist: typer>=0.12.0; extra == "colab-new"
Requires-Dist: pydantic; extra == "colab-new"
Requires-Dist: pyyaml; extra == "colab-new"
Requires-Dist: nest-asyncio; extra == "colab-new"
Provides-Extra: colab-no-deps
Requires-Dist: accelerate>=0.34.1; extra == "colab-no-deps"
Requires-Dist: trl!=0.19.0,<=0.24.0,>=0.18.2; extra == "colab-no-deps"
Requires-Dist: peft>=0.18.0; extra == "colab-no-deps"
Requires-Dist: xformers; (("linux" in sys_platform or sys_platform == "win32") and (platform_machine == "AMD64" or platform_machine == "x86_64")) and extra == "colab-no-deps"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "colab-no-deps"
Requires-Dist: protobuf; extra == "colab-no-deps"
Provides-Extra: colab
Requires-Dist: unsloth[cu121]; extra == "colab"
Provides-Extra: colab-ampere
Requires-Dist: unsloth[colab-ampere-torch220]; extra == "colab-ampere"
Requires-Dist: unsloth[flashattention]; extra == "colab-ampere"
Provides-Extra: cu118-ampere
Requires-Dist: unsloth[huggingface]; extra == "cu118-ampere"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-ampere"
Requires-Dist: unsloth[cu118only]; extra == "cu118-ampere"
Requires-Dist: unsloth[flashattention]; extra == "cu118-ampere"
Provides-Extra: cu121-ampere
Requires-Dist: unsloth[huggingface]; extra == "cu121-ampere"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu121-ampere"
Requires-Dist: unsloth[cu121only]; extra == "cu121-ampere"
Requires-Dist: unsloth[flashattention]; extra == "cu121-ampere"
Provides-Extra: cu118-ampere-torch211
Requires-Dist: unsloth[huggingface]; extra == "cu118-ampere-torch211"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-ampere-torch211"
Requires-Dist: unsloth[cu118onlytorch211]; extra == "cu118-ampere-torch211"
Requires-Dist: unsloth[flashattention]; extra == "cu118-ampere-torch211"
Provides-Extra: cu121-ampere-torch211
Requires-Dist: unsloth[huggingface]; extra == "cu121-ampere-torch211"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu121-ampere-torch211"
Requires-Dist: unsloth[cu121onlytorch211]; extra == "cu121-ampere-torch211"
Requires-Dist: unsloth[flashattention]; extra == "cu121-ampere-torch211"
Provides-Extra: cu118-ampere-torch220
Requires-Dist: unsloth[huggingface]; extra == "cu118-ampere-torch220"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-ampere-torch220"
Requires-Dist: unsloth[cu118onlytorch220]; extra == "cu118-ampere-torch220"
Requires-Dist: unsloth[flashattention]; extra == "cu118-ampere-torch220"
Provides-Extra: cu121-ampere-torch220
Requires-Dist: unsloth[huggingface]; extra == "cu121-ampere-torch220"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu121-ampere-torch220"
Requires-Dist: unsloth[cu121onlytorch220]; extra == "cu121-ampere-torch220"
Requires-Dist: unsloth[flashattention]; extra == "cu121-ampere-torch220"
Provides-Extra: cu118-ampere-torch230
Requires-Dist: unsloth[huggingface]; extra == "cu118-ampere-torch230"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-ampere-torch230"
Requires-Dist: unsloth[cu118onlytorch230]; extra == "cu118-ampere-torch230"
Requires-Dist: unsloth[flashattention]; extra == "cu118-ampere-torch230"
Provides-Extra: cu121-ampere-torch230
Requires-Dist: unsloth[huggingface]; extra == "cu121-ampere-torch230"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu121-ampere-torch230"
Requires-Dist: unsloth[cu121onlytorch230]; extra == "cu121-ampere-torch230"
Requires-Dist: unsloth[flashattention]; extra == "cu121-ampere-torch230"
Provides-Extra: cu118-ampere-torch240
Requires-Dist: unsloth[huggingface]; extra == "cu118-ampere-torch240"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-ampere-torch240"
Requires-Dist: unsloth[cu118onlytorch240]; extra == "cu118-ampere-torch240"
Requires-Dist: unsloth[flashattention]; extra == "cu118-ampere-torch240"
Provides-Extra: cu121-ampere-torch240
Requires-Dist: unsloth[huggingface]; extra == "cu121-ampere-torch240"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu121-ampere-torch240"
Requires-Dist: unsloth[cu121onlytorch240]; extra == "cu121-ampere-torch240"
Requires-Dist: unsloth[flashattention]; extra == "cu121-ampere-torch240"
Provides-Extra: cu124-ampere-torch240
Requires-Dist: unsloth[huggingface]; extra == "cu124-ampere-torch240"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu124-ampere-torch240"
Requires-Dist: unsloth[cu124onlytorch240]; extra == "cu124-ampere-torch240"
Requires-Dist: unsloth[flashattention]; extra == "cu124-ampere-torch240"
Provides-Extra: cu118-ampere-torch250
Requires-Dist: unsloth[huggingface]; extra == "cu118-ampere-torch250"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-ampere-torch250"
Requires-Dist: unsloth[cu118onlytorch250]; extra == "cu118-ampere-torch250"
Requires-Dist: unsloth[flashattention]; extra == "cu118-ampere-torch250"
Provides-Extra: cu121-ampere-torch250
Requires-Dist: unsloth[huggingface]; extra == "cu121-ampere-torch250"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu121-ampere-torch250"
Requires-Dist: unsloth[cu121onlytorch250]; extra == "cu121-ampere-torch250"
Requires-Dist: unsloth[flashattention]; extra == "cu121-ampere-torch250"
Provides-Extra: cu124-ampere-torch250
Requires-Dist: unsloth[huggingface]; extra == "cu124-ampere-torch250"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu124-ampere-torch250"
Requires-Dist: unsloth[cu124onlytorch250]; extra == "cu124-ampere-torch250"
Requires-Dist: unsloth[flashattention]; extra == "cu124-ampere-torch250"
Provides-Extra: cu118-ampere-torch251
Requires-Dist: unsloth[huggingface]; extra == "cu118-ampere-torch251"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-ampere-torch251"
Requires-Dist: unsloth[cu118onlytorch251]; extra == "cu118-ampere-torch251"
Requires-Dist: unsloth[flashattention]; extra == "cu118-ampere-torch251"
Provides-Extra: cu121-ampere-torch251
Requires-Dist: unsloth[huggingface]; extra == "cu121-ampere-torch251"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu121-ampere-torch251"
Requires-Dist: unsloth[cu121onlytorch251]; extra == "cu121-ampere-torch251"
Requires-Dist: unsloth[flashattention]; extra == "cu121-ampere-torch251"
Provides-Extra: cu124-ampere-torch251
Requires-Dist: unsloth[huggingface]; extra == "cu124-ampere-torch251"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu124-ampere-torch251"
Requires-Dist: unsloth[cu124onlytorch251]; extra == "cu124-ampere-torch251"
Requires-Dist: unsloth[flashattention]; extra == "cu124-ampere-torch251"
Provides-Extra: cu118-ampere-torch260
Requires-Dist: unsloth[huggingface]; extra == "cu118-ampere-torch260"
Requires-Dist: bitsandbytes>=0.45.1; extra == "cu118-ampere-torch260"
Requires-Dist: unsloth[cu118onlytorch260]; extra == "cu118-ampere-torch260"
Requires-Dist: unsloth[flashattention]; extra == "cu118-ampere-torch260"
Provides-Extra: cu124-ampere-torch260
Requires-Dist: unsloth[huggingface]; extra == "cu124-ampere-torch260"
Requires-Dist: bitsandbytes>=0.45.1; extra == "cu124-ampere-torch260"
Requires-Dist: unsloth[cu124onlytorch260]; extra == "cu124-ampere-torch260"
Requires-Dist: unsloth[flashattention]; extra == "cu124-ampere-torch260"
Provides-Extra: cu126-ampere-torch260
Requires-Dist: unsloth[huggingface]; extra == "cu126-ampere-torch260"
Requires-Dist: bitsandbytes>=0.45.1; extra == "cu126-ampere-torch260"
Requires-Dist: unsloth[cu126onlytorch260]; extra == "cu126-ampere-torch260"
Requires-Dist: unsloth[flashattention]; extra == "cu126-ampere-torch260"
Provides-Extra: cu118-ampere-torch270
Requires-Dist: unsloth[huggingface]; extra == "cu118-ampere-torch270"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-ampere-torch270"
Requires-Dist: unsloth[cu118onlytorch270]; extra == "cu118-ampere-torch270"
Requires-Dist: unsloth[flashattention]; extra == "cu118-ampere-torch270"
Provides-Extra: cu126-ampere-torch270
Requires-Dist: unsloth[huggingface]; extra == "cu126-ampere-torch270"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu126-ampere-torch270"
Requires-Dist: unsloth[cu126onlytorch270]; extra == "cu126-ampere-torch270"
Requires-Dist: unsloth[flashattention]; extra == "cu126-ampere-torch270"
Provides-Extra: cu128-ampere-torch270
Requires-Dist: unsloth[huggingface]; extra == "cu128-ampere-torch270"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu128-ampere-torch270"
Requires-Dist: unsloth[cu128onlytorch270]; extra == "cu128-ampere-torch270"
Requires-Dist: unsloth[flashattention]; extra == "cu128-ampere-torch270"
Provides-Extra: cu118-ampere-torch271
Requires-Dist: unsloth[huggingface]; extra == "cu118-ampere-torch271"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-ampere-torch271"
Requires-Dist: unsloth[cu118onlytorch271]; extra == "cu118-ampere-torch271"
Requires-Dist: unsloth[flashattention]; extra == "cu118-ampere-torch271"
Provides-Extra: cu126-ampere-torch271
Requires-Dist: unsloth[huggingface]; extra == "cu126-ampere-torch271"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu126-ampere-torch271"
Requires-Dist: unsloth[cu126onlytorch271]; extra == "cu126-ampere-torch271"
Requires-Dist: unsloth[flashattention]; extra == "cu126-ampere-torch271"
Provides-Extra: cu128-ampere-torch271
Requires-Dist: unsloth[huggingface]; extra == "cu128-ampere-torch271"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu128-ampere-torch271"
Requires-Dist: unsloth[cu128onlytorch271]; extra == "cu128-ampere-torch271"
Requires-Dist: unsloth[flashattention]; extra == "cu128-ampere-torch271"
Provides-Extra: cu118-ampere-torch280
Requires-Dist: unsloth[huggingface]; extra == "cu118-ampere-torch280"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu118-ampere-torch280"
Requires-Dist: unsloth[cu118onlytorch280]; extra == "cu118-ampere-torch280"
Requires-Dist: unsloth[flashattention]; extra == "cu118-ampere-torch280"
Provides-Extra: cu126-ampere-torch280
Requires-Dist: unsloth[huggingface]; extra == "cu126-ampere-torch280"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu126-ampere-torch280"
Requires-Dist: unsloth[cu126onlytorch280]; extra == "cu126-ampere-torch280"
Requires-Dist: unsloth[flashattention]; extra == "cu126-ampere-torch280"
Provides-Extra: cu128-ampere-torch280
Requires-Dist: unsloth[huggingface]; extra == "cu128-ampere-torch280"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu128-ampere-torch280"
Requires-Dist: unsloth[cu128onlytorch280]; extra == "cu128-ampere-torch280"
Requires-Dist: unsloth[flashattention]; extra == "cu128-ampere-torch280"
Provides-Extra: cu130-ampere-torch280
Requires-Dist: unsloth[huggingface]; extra == "cu130-ampere-torch280"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu130-ampere-torch280"
Requires-Dist: unsloth[cu130onlytorch280]; extra == "cu130-ampere-torch280"
Requires-Dist: unsloth[flashattention]; extra == "cu130-ampere-torch280"
Provides-Extra: cu126-ampere-torch290
Requires-Dist: unsloth[huggingface]; extra == "cu126-ampere-torch290"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu126-ampere-torch290"
Requires-Dist: unsloth[cu126onlytorch290]; extra == "cu126-ampere-torch290"
Provides-Extra: cu128-ampere-torch290
Requires-Dist: unsloth[huggingface]; extra == "cu128-ampere-torch290"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu128-ampere-torch290"
Requires-Dist: unsloth[cu128onlytorch290]; extra == "cu128-ampere-torch290"
Provides-Extra: cu130-ampere-torch290
Requires-Dist: unsloth[huggingface]; extra == "cu130-ampere-torch290"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu130-ampere-torch290"
Requires-Dist: unsloth[cu130onlytorch290]; extra == "cu130-ampere-torch290"
Provides-Extra: cu126-ampere-torch291
Requires-Dist: unsloth[huggingface]; extra == "cu126-ampere-torch291"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu126-ampere-torch291"
Requires-Dist: unsloth[cu126onlytorch291]; extra == "cu126-ampere-torch291"
Provides-Extra: cu128-ampere-torch291
Requires-Dist: unsloth[huggingface]; extra == "cu128-ampere-torch291"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu128-ampere-torch291"
Requires-Dist: unsloth[cu128onlytorch291]; extra == "cu128-ampere-torch291"
Provides-Extra: cu130-ampere-torch291
Requires-Dist: unsloth[huggingface]; extra == "cu130-ampere-torch291"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu130-ampere-torch291"
Requires-Dist: unsloth[cu130onlytorch291]; extra == "cu130-ampere-torch291"
Provides-Extra: cu126-ampere-torch2100
Requires-Dist: unsloth[huggingface]; extra == "cu126-ampere-torch2100"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu126-ampere-torch2100"
Requires-Dist: unsloth[cu126onlytorch2100]; extra == "cu126-ampere-torch2100"
Requires-Dist: unsloth[audio-torch210]; extra == "cu126-ampere-torch2100"
Provides-Extra: cu128-ampere-torch2100
Requires-Dist: unsloth[huggingface]; extra == "cu128-ampere-torch2100"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu128-ampere-torch2100"
Requires-Dist: unsloth[cu128onlytorch2100]; extra == "cu128-ampere-torch2100"
Requires-Dist: unsloth[audio-torch210]; extra == "cu128-ampere-torch2100"
Provides-Extra: cu130-ampere-torch2100
Requires-Dist: unsloth[huggingface]; extra == "cu130-ampere-torch2100"
Requires-Dist: bitsandbytes!=0.46.0,!=0.48.0,>=0.45.5; extra == "cu130-ampere-torch2100"
Requires-Dist: unsloth[cu130onlytorch2100]; extra == "cu130-ampere-torch2100"
Requires-Dist: unsloth[audio-torch210]; extra == "cu130-ampere-torch2100"
Dynamic: license-file

<h1 align="center" style="margin:0;">
  <a href="https://unsloth.ai/docs"><picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/unslothai/unsloth/main/images/unsloth%20logo%20white%20text.png">
    <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/unslothai/unsloth/main/images/unsloth%20logo%20black%20text.png">
    <img alt="Unsloth logo" src="https://raw.githubusercontent.com/unslothai/unsloth/main/images/unsloth%20logo%20black%20text.png" height="80" style="max-width:100%;">
  </picture></a>
</h1>
<h3 align="center" style="margin: 0; margin-top: 0;">
Unsloth is the first desktop app to run and train models.
</h3>

<p align="center">
  <a href="#-features">Features</a> •
  <a href="#-install">Quickstart</a> •
  <a href="#-free-notebooks">Notebooks</a> •
  <a href="https://unsloth.ai/docs">Documentation</a>
</p>

<p align="center">
  <a href="https://unsloth.ai/docs/desktop">
    <img height="400" alt="unsloth desktop" src="https://unsloth.ai/cgi/image/unsloth_qwen3.8_final_ut2eqWnYJ-SLmu0s7x522.png?format=raw" />
  </a>
</p>

## ⚡ Get started
Download the native Unsloth Desktop app for your operating system:
<table>
  <tr>
    <td><b>Platform</b></td>
    <td><b>Link</b></td>
  </tr>
  <tr>
    <td><b>Windows</b></td>
    <td><a href='https://github.com/unslothai/unsloth/releases/download/v0.1.802-beta/Unsloth-Desktop-0_1_802_beta-Windows.exe'>Download</a></td>
  </tr>
  <tr>
    <td><b>macOS</b></td>
    <td><a href='https://github.com/unslothai/unsloth/releases/download/v0.1.802-beta/Unsloth-Desktop-0_1_802_beta-MacOS.dmg'>Download</a></td>
  </tr>
  <tr>
    <td><b>Linux / Ubuntu (deb)</b></td>
    <td><a href='https://github.com/unslothai/unsloth/releases/download/v0.1.802-beta/Unsloth-Desktop-0_1_802_beta-Ubuntu.deb'>Download</a></td>
  </tr>
  <tr>
    <td><b>Linux (AppImage)</b></td>
    <td><a href='https://github.com/unslothai/unsloth/releases/download/v0.1.802-beta/Unsloth-Desktop-0_1_802_beta-Linux.AppImage'>Download</a></td>
  </tr>
  <tr>
    <td><b>Linux (Arm64)</b></td>
    <td><a href='https://github.com/unslothai/unsloth/releases/download/v0.1.802-beta/Unsloth-Desktop-0_1_802_beta-ARM64.app.tar.gz'>Download</a></td>
  </tr>
</table>

Download from [Unsloth](https://unsloth.ai/download) or [GitHub Releases](https://github.com/unslothai/unsloth/releases).

Or if you prefer to install manually:

#### macOS, Linux, WSL:
```bash
curl -fsSL https://unsloth.ai/install.sh | sh
```
#### Windows:
```powershell
irm https://unsloth.ai/install.ps1 | iex
```
#### Community:

- [Discord](https://discord.gg/unsloth)
- [𝕏 (Twitter)](https://x.com/UnslothAI)
- [Reddit](https://reddit.com/r/unsloth)

## ⭐ Features
Unsloth works on **Windows, Linux, WSL** and **macOS**. We support **Multi GPU setups, NVIDIA, AMD, Intel GPUs, CPUs** and the **Vulkan** backend.

### Run & Build with AI
* Run and train LLMs, diffusion, embedding, audio models: [Kimi K3](https://unsloth.ai/docs/models/kimi-k3), MiniMax-H3, Qwen3.8, [Muse Glimmer](https://unsloth.ai/docs/models/muse-glimmer), [DeepSeek-V4](https://unsloth.ai/docs/models/deepseek-v4), [Gemma 4](https://unsloth.ai/docs/models/gemma-4).
* **Agents & Tools:** Use local models with [Claude Code](https://unsloth.ai/docs/basics/claude-code), [Codex](https://unsloth.ai/docs/basics/codex), and [MCP](https://unsloth.ai/docs/basics/mcp), including tool calling and code execution.
* **Search & RAG:** Use private and unlimited web search, deep research, auto-compaction (rolling context window) and RAG.
* **Image and video:** Run and train [image](https://unsloth.ai/docs/basics/diffusion-image) and video diffusion or multimodal models
* **Remote & LAN:** Access your local models from any device on [LAN](https://unsloth.ai/docs/basics/lan) or remotely through secure [Cloudflare](https://unsloth.ai/docs/basics/how-to-serve-local-llms-anywhere-secure-remote-access-with-cloudflare-and-unsloth) HTTPS.
* **Connect:** Serve models through an [OpenAI compatible API](https://unsloth.ai/docs/basics/api). Also connect your ChatGPT/Codex subscription and [cloud providers](https://unsloth.ai/docs/integrations/connections)


### Train & Deploy
* **Fine-tuning:** Train LLMs, diffusion, TTS, and embedding models 2× faster with 70% less VRAM with [no accuracy loss](https://unsloth.ai/blog#training)
* **Complete support:** Supports [reinforcement learning](https://unsloth.ai/docs/get-started/reinforcement-learning-rl-guide), LoRA, QLoRA, full fine tuning, pretraining, RL, GRPO, DPO, and FP8.
* **Export & Deploy:** [Export](https://unsloth.ai/docs/new/studio/export) or Deploy models with including [GGUF](https://unsloth.ai/docs/basics/inference-and-deployment/saving-to-gguf), NVFP4, FP8 and more formats.
* **Datasets:** Build datasets from PDFs, CSVs, DOCX files, and more with [Data Recipes](https://unsloth.ai/docs/new/studio/data-recipe).
  
## 🚀 Unsloth Start

[Unsloth Start](https://unsloth.ai/docs/integrations/unsloth-start) connects [Claude Code](https://unsloth.ai/docs/basics/claude-code), [Codex](https://unsloth.ai/docs/basics/codex) and other agents to local models with one command.

```bash
unsloth start claude --model unsloth/Qwen3.8-27B-GGUF:UD-Q4_K_XL
```

| Agent | Command |
| --- | --- |
| Claude Code | `unsloth start claude` |
| OpenAI Codex | `unsloth start codex` |
| Hermes Agent | `unsloth start hermes` |
| OpenClaw | `unsloth start openclaw` |
| OpenCode | `unsloth start opencode` |

## 📥 Install
Unsloth can be used in three ways: **[Unsloth Desktop](https://unsloth.ai/download)**, the desktop app; **[Unsloth Studio](https://unsloth.ai/docs/new/studio/)**, the web UI; or **Unsloth Core**, the code based version.

### Unsloth Desktop (recommended)

<table>
  <tr>
    <td><b>Platform</b></td>
    <td><b>Link</b></td>
  </tr>
  <tr>
    <td><b>Windows</b></td>
    <td><a href='https://github.com/unslothai/unsloth/releases/download/v0.1.802-beta/Unsloth-Desktop-0_1_802_beta-Windows.exe'>Download</a></td>
  </tr>
  <tr>
    <td><b>macOS</b></td>
    <td><a href='https://github.com/unslothai/unsloth/releases/download/v0.1.802-beta/Unsloth-Desktop-0_1_802_beta-MacOS.dmg'>Download</a></td>
  </tr>
  <tr>
    <td><b>Linux / Ubuntu (deb)</b></td>
    <td><a href='https://github.com/unslothai/unsloth/releases/download/v0.1.802-beta/Unsloth-Desktop-0_1_802_beta-Ubuntu.deb'>Download</a></td>
  </tr>
  <tr>
    <td><b>Linux (AppImage)</b></td>
    <td><a href='https://github.com/unslothai/unsloth/releases/download/v0.1.802-beta/Unsloth-Desktop-0_1_802_beta-Linux.AppImage'>Download</a></td>
  </tr>
  <tr>
    <td><b>Linux (Arm64)</b></td>
    <td><a href='https://github.com/unslothai/unsloth/releases/download/v0.1.802-beta/Unsloth-Desktop-0_1_802_beta-ARM64.app.tar.gz'>Download</a></td>
  </tr>
</table>

### Unsloth Studio (web UI)

#### macOS, Linux, WSL:
```bash
curl -fsSL https://unsloth.ai/install.sh | sh
```

#### Windows:
```powershell
irm https://unsloth.ai/install.ps1 | iex
```

#### Launch
```bash
unsloth studio
```

#### HTTP Secure Deployment
```bash
unsloth studio --secure
```

#### Docker
Use our [Docker image](https://hub.docker.com/r/unsloth/unsloth) ```unsloth/unsloth``` container. Run:
```bash
docker run -d -e JUPYTER_PASSWORD="mypassword" \
  -p 8888:8888 -p 8000:8000 -p 2222:22 \
  -v $(pwd)/work:/workspace/work \
  --gpus all \
  unsloth/unsloth
```

#### Remote HTTPS & LAN Access
Server-side tools are on by default - so **be careful**! Keep your password safe, or use `--disable-tools` when exposing Unsloth.

**Global HTTPS Access**:
Creates a free Cloudflare link that serves Unsloth - you can access the link globally (even on your phone!)
```bash
unsloth studio --secure
```
`-H 0.0.0.0` and different ports also work:
```bash
unsloth studio -H 0.0.0.0 -p 8888
```
**LAN Access (home network)**: `Settings > API keys > LAN access`

#### Password management & headless starts
Headless starts:
```bash
UNSLOTH_STUDIO_PASSWORD='your-strong-password' unsloth studio --secure   # via env var
```
Reset your password:
```bash
unsloth studio reset-password
```

#### Developer, Nightly, Uninstall
To see developer, nightly and uninstallation etc. instructions, see [advanced installation](#-advanced-installation).

### Unsloth Core (code-based)
#### Linux, WSL:
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv unsloth_env --python 3.13
source unsloth_env/bin/activate
uv pip install unsloth --torch-backend=auto
```
#### Windows:
```powershell
winget install -e --id Python.Python.3.13
winget install --id=astral-sh.uv  -e
uv venv unsloth_env --python 3.13
.\unsloth_env\Scripts\activate
uv pip install unsloth --torch-backend=auto
```

#### AMD, Intel, DGX Spark, Blackwell:
See our [Blackwell guide](https://unsloth.ai/docs/blog/fine-tuning-llms-with-blackwell-rtx-50-series-and-unsloth) and [DGX Spark guide](https://unsloth.ai/docs/blog/fine-tuning-llms-with-nvidia-dgx-spark-and-unsloth). <br>
To install Unsloth on **AMD** and **Intel** GPUs, follow our [AMD Guide](https://unsloth.ai/docs/basics/amd) and [Intel Guide](https://unsloth.ai/docs/get-started/install/intel).

## 📒 Free Notebooks

Train for free with our notebooks.
Read our [guide](https://unsloth.ai/docs/get-started/fine-tuning-llms-guide). Add dataset, run, then deploy your trained model.

| Model | Free Notebooks | Performance | Memory use |
|-----------|---------|--------|----------|
| **Unsloth Studio**      | [▶️ Start for free](https://colab.research.google.com/github/unslothai/unsloth/blob/main/studio/Unsloth_Studio_Colab.ipynb)               |  |  |
| **Gemma 4 (E2B)**      | [▶️ Start for free](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma4_(E2B)-Vision.ipynb)               | 1.5x faster | 50% less |
| **Qwen3.5 (4B)**      | [▶️ Start for free](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_5_(4B)_Vision.ipynb)               | 1.5x faster | 60% less |
| **gpt-oss (20B)**      | [▶️ Start for free](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/gpt-oss-(20B)-Fine-tuning.ipynb)               | 2x faster | 70% less |
| **Qwen3.5 GSPO**      | [▶️ Start for free](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_5_(4B)_Vision_GRPO.ipynb)               | 2x faster | 70% less |
| **gpt-oss (20B): GRPO**      | [▶️ Start for free](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/gpt-oss-(20B)-GRPO.ipynb)               | 2x faster | 80% less |
| **Qwen3: Advanced GRPO**      | [▶️ Start for free](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_(4B)-GRPO.ipynb)               | 2x faster | 70% less |
| **embeddinggemma (300M)**    | [▶️ Start for free](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/EmbeddingGemma_(300M).ipynb)               | 2x faster | 20% less |
| **Llama 3.1 (8B) Alpaca**      | [▶️ Start for free](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3.1_(8B)-Alpaca.ipynb)               | 2x faster | 70% less |
| **Llama 3.2 Conversational**      | [▶️ Start for free](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3.2_(1B_and_3B)-Conversational.ipynb)               | 2x faster | 70% less |
| **Orpheus-TTS (3B)**     | [▶️ Start for free](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Orpheus_(3B)-TTS.ipynb)               | 1.5x faster | 50% less |

- See all our notebooks for: [Kaggle](https://github.com/unslothai/notebooks?tab=readme-ov-file#-kaggle-notebooks), [GRPO](https://unsloth.ai/docs/get-started/unsloth-notebooks#grpo-reasoning-rl-notebooks), [TTS](https://unsloth.ai/docs/get-started/unsloth-notebooks#text-to-speech-tts-notebooks), [embedding](https://unsloth.ai/docs/new/embedding-finetuning) & [Vision](https://unsloth.ai/docs/get-started/unsloth-notebooks#vision-multimodal-notebooks)
- See [all our models](https://unsloth.ai/docs/get-started/unsloth-model-catalog) and [all our notebooks](https://unsloth.ai/docs/get-started/unsloth-notebooks)
- See detailed documentation for Unsloth [here](https://unsloth.ai/docs)

## 🦥 Unsloth News
- **AMD training**: Train, run RL, chat and deploy on AMD GPUs across Windows, WSL and Linux. [Guide](https://unsloth.ai/docs/basics/amd)
- **Local models for any agent**: Use `unsloth start` with Claude Code, Codex, Hermes, OpenCode, OpenClaw and more through Unsloth's OpenAI- and Anthropic-compatible APIs. [Guide](https://unsloth.ai/docs/basics/api)
- **GLM-5.2**: Run Z.ai's 744B-parameter, 1M-context open model locally with Unsloth Dynamic GGUFs. [Guide](https://unsloth.ai/docs/models/glm-5.2)
- **DeepSeek-V4**: Run DeepSeek-V4-Flash locally with corrected multi-turn and tool-calling behavior. [Guide](https://unsloth.ai/docs/models/deepseek-v4)
- **Gemma 4**: Run and train Gemma 4 text, image and audio models with QAT, MTP, GGUF and MLX support. [Guide](https://unsloth.ai/docs/models/gemma-4)
- **MCP servers**: Connect local models to files, apps, databases and external tools through Model Context Protocol. [Guide](https://unsloth.ai/docs/basics/mcp)
- **New models**: [Qwen-AgentWorld](https://huggingface.co/unsloth/Qwen-AgentWorld-35B-A3B-GGUF), [Ornith](https://huggingface.co/unsloth/models?search=ornith), [Kimi K2.7 Code](https://unsloth.ai/docs/models/kimi-k2.7-code) and [MiniMax M3](https://unsloth.ai/docs/models/minimax-m3)

<details>
  <summary>More News</summary>

  - **Connections**: Mix local models with API providers (OpenAI, Anthropic) or servers (vLLM, Ollama) in the same interface. [Guide](https://unsloth.ai/docs/integrations/connections)
  - **Introducing Unsloth Studio**: our new web UI for running and training LLMs. [Blog](https://unsloth.ai/docs/new/studio)
  - **DiffusionGemma**: Run and fine-tune Google's diffusion language model with 1.8x faster inference in Unsloth Studio. [Guide](https://unsloth.ai/docs/models/diffusiongemma)
  - **Qwen3.6**: Run and train Qwen3.6 with MTP for 1.4-2.2x faster inference and NVFP4 quants for supported GPUs. [Guide](https://unsloth.ai/docs/models/qwen3.6)
  - Train **MoE LLMs 12x faster** with 35% less VRAM - DeepSeek, GLM, Qwen and gpt-oss. [Blog](https://unsloth.ai/docs/new/faster-moe)
  - **Embedding models**: Unsloth now supports ~1.8-3.3x faster embedding fine-tuning. [Blog](https://unsloth.ai/docs/new/embedding-finetuning) • [Notebooks](https://unsloth.ai/docs/get-started/unsloth-notebooks#embedding-models)
  - New **7x longer context RL** vs. all other setups, via our new batching algorithms. [Blog](https://unsloth.ai/docs/new/grpo-long-context)
  - New RoPE & MLP **Triton Kernels** & **Padding Free + Packing**: 3x faster training & 30% less VRAM. [Blog](https://unsloth.ai/docs/new/3x-faster-training-packing)
  - **500K Context**: Training a 20B model with >500K context is now possible on an 80GB GPU. [Blog](https://unsloth.ai/docs/blog/500k-context-length-fine-tuning)
  - **FP8 & Vision RL**: You can now do FP8 & VLM GRPO on consumer GPUs. [FP8 Blog](https://unsloth.ai/docs/get-started/reinforcement-learning-rl-guide/fp8-reinforcement-learning) • [Vision RL](https://unsloth.ai/docs/get-started/reinforcement-learning-rl-guide/vision-reinforcement-learning-vlm-rl)

</details>

## 📥 Advanced Installation
The below advanced instructions are for Unsloth Studio. For Unsloth Core advanced installation, [view our docs](https://unsloth.ai/docs/get-started/install/pip-install#advanced-pip-installation).

#### Developer / Nightly / Experimental installs: macOS, Linux, WSL:
The developer install builds from the `main` branch, which is the latest (nightly) source.
```bash
git clone https://github.com/unslothai/unsloth
cd unsloth
./install.sh --local
unsloth studio -p 8888
```
To install into an isolated location, set `UNSLOTH_STUDIO_HOME`:
```bash
UNSLOTH_STUDIO_HOME="$PWD/.studio" ./install.sh --local
UNSLOTH_STUDIO_HOME="$PWD/.studio" unsloth studio -p 8888
```
Then to update:
```bash
cd unsloth && git pull
./install.sh --local
unsloth studio -p 8888
```

#### Developer / Nightly / Experimental installs: Windows PowerShell:
The developer install builds from the `main` branch, which is the latest (nightly) source.
```powershell
git clone https://github.com/unslothai/unsloth.git
cd unsloth
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\install.ps1 --local
unsloth studio -p 8888
```
To install into an isolated location, set `UNSLOTH_STUDIO_HOME`:
```powershell
$env:UNSLOTH_STUDIO_HOME="$PWD\.studio"; .\install.ps1 --local
$env:UNSLOTH_STUDIO_HOME="$PWD\.studio"; unsloth studio -p 8888
```
Then to update:
```powershell
cd unsloth; git pull
.\install.ps1 --local
unsloth studio -p 8888
```

#### Advanced launch options

Skip PyTorch (GGUF-only mode):
```bash
curl -fsSL https://unsloth.ai/install.sh | UNSLOTH_NO_TORCH=1 sh
```
```powershell
$env:UNSLOTH_NO_TORCH=1; irm https://unsloth.ai/install.ps1 | iex
```

Skip the post-install prompt that starts Unsloth (useful for automated installs):
```bash
curl -fsSL https://unsloth.ai/install.sh | UNSLOTH_SKIP_AUTOSTART=1 sh
```
```powershell
$env:UNSLOTH_SKIP_AUTOSTART=1; irm https://unsloth.ai/install.ps1 | iex
```

Pinning the Python version:
```bash
curl -fsSL https://unsloth.ai/install.sh | UNSLOTH_PYTHON=3.12 sh
```
```powershell
$env:UNSLOTH_PYTHON='3.12'; irm https://unsloth.ai/install.ps1 | iex
```

Install to a custom location with `UNSLOTH_STUDIO_HOME`:
```bash
curl -fsSL https://unsloth.ai/install.sh | UNSLOTH_STUDIO_HOME=/abs/path sh
```
```powershell
$env:UNSLOTH_STUDIO_HOME='C:\path'; irm https://unsloth.ai/install.ps1 | iex
```

Point the frontend build at a corporate npm mirror/proxy with `UNSLOTH_NPM_REGISTRY`:
```bash
UNSLOTH_NPM_REGISTRY=https://artifactory.example.com/api/npm/npm/ ./install.sh --local
```
```powershell
$env:UNSLOTH_NPM_REGISTRY='https://artifactory.example.com/api/npm/npm/'; .\install.ps1 --local
```

Cap Unsloth's native CPU thread pools on high-core hosts: `UNSLOTH_CPU_THREADS=8 unsloth studio -p 8888`.

#### Vulkan, custom llama.cpp backends:

You can force the backend during installation: 
```bash
export UNSLOTH_LLAMA_CPP_BACKEND=vulkan   # or cpu, cuda, rocm, auto
curl -fsSL https://unsloth.ai/install.sh | sh
```
```powershell
$env:UNSLOTH_LLAMA_CPP_BACKEND="vulkan"   # or cpu, cuda, rocm, auto
irm https://unsloth.ai/install.ps1 | iex
```

#### Uninstall

**MacOS, WSL, Linux:** `curl -fsSL https://raw.githubusercontent.com/unslothai/unsloth/main/scripts/uninstall.sh | sh`

**Windows (PowerShell):** `irm https://raw.githubusercontent.com/unslothai/unsloth/main/scripts/uninstall.ps1 | iex`

For more info, [see our docs](https://unsloth.ai/docs/new/studio/install#uninstall).

#### Deleting model files

You can delete old model files either from the bin icon in model search or by removing the relevant cached model folder from the default Hugging Face cache directory. By default, HF uses:

**MacOS, Linux, WSL:** `~/.cache/huggingface/hub/`

**Windows:** `%USERPROFILE%\.cache\huggingface\hub\`

## 💚 Community and Links
| Type                                                                                                                                      | Links                                                                          |
| ----------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| <img width="16" src="https://cdn.prod.website-files.com/6257adef93867e50d84d30e2/66e3d80db9971f10a9757c99_Symbol.svg" />  **Discord**                       | [Join Discord server](https://discord.com/invite/unsloth)                          |
| <img width="15" src="https://redditinc.com/hs-fs/hubfs/Reddit%20Inc/Brand/Reddit_Logo.png" />  **r/unsloth Reddit**                       | [Join Reddit community](https://reddit.com/r/unsloth)                          |
| 📚 **Documentation & Wiki**                                                                                                               | [Read Our Docs](https://unsloth.ai/docs)                                       |
| <img width="13" src="https://upload.wikimedia.org/wikipedia/commons/0/09/X_(formerly_Twitter)_logo_late_2025.svg" />  **Twitter (aka X)** | [Follow us on X](https://twitter.com/unslothai)                                |
| 🔮 **Our Models**                                                                                                                         | [Unsloth Catalog](https://unsloth.ai/docs/get-started/unsloth-model-catalog)   |
| ✍️ **Blog**                                                                                                                               | [Read our Blogs](https://unsloth.ai/blog)                                      |

### Citation

You can cite the Unsloth repo as follows:
```bibtex
@software{unsloth,
  author = {Daniel Han, Michael Han and Unsloth team},
  title = {Unsloth},
  url = {https://github.com/unslothai/unsloth},
  year = {2023}
}
```
If you trained a model with 🦥Unsloth, you can use this cool sticker!   <img src="https://raw.githubusercontent.com/unslothai/unsloth/main/images/made with unsloth.png" width="200" align="center" />

### License
Unsloth uses a dual-licensing model of Apache 2.0 and AGPL-3.0. The core Unsloth package remains licensed under **[Apache 2.0](https://github.com/unslothai/unsloth?tab=Apache-2.0-1-ov-file)**, while certain optional components, such as the Unsloth Studio UI are licensed under the open-source license **[AGPL-3.0](https://github.com/unslothai/unsloth?tab=AGPL-3.0-2-ov-file)**.

This structure helps support ongoing Unsloth development while keeping the project open source and enabling the broader ecosystem to continue growing.

### Thank You to
- The [llama.cpp library](https://github.com/ggml-org/llama.cpp) that lets users run and save models with Unsloth
- The Hugging Face team and their libraries: [transformers](https://github.com/huggingface/transformers) and [TRL](https://github.com/huggingface/trl)
- The Pytorch and [Torch AO](https://github.com/unslothai/unsloth/pull/3391) team for their contributions
- NVIDIA for their [NeMo DataDesigner](https://github.com/NVIDIA-NeMo/DataDesigner) library and their contributions
- And of course for every single person who has contributed or has used Unsloth!
