From 6416f235cfdca1ce344ddb7d70119b9a5b12a67f Mon Sep 17 00:00:00 2001 From: Daniel Han Date: Wed, 6 Dec 2023 02:59:22 +1100 Subject: [PATCH] Pre-release 2023 December version (Mistral, Prelim DPO, WSL, bug fixes) (#16) * Immediate bug fixes * Update README.md * Update README.md * Update llama.py * Update llama.py * Rope Scaling and max_seq_len will change * Update llama.py * new images * Update README.md * Images * Update README.md * Update pyproject.toml * GQA * Update llama.py * Update llama.py * Update llama.py * Update llama.py * Update llama.py --- README.md | 66 +- images/Discord.png | Bin 58500 -> 18382 bytes images/LAION 2GPU.png | Bin 0 -> 51428 bytes images/LAION 2GPU.svg | 1518 ------------------------- images/SlimOrca 1GPU.svg | 1424 ----------------------- images/try live demo green.png | Bin 0 -> 15262 bytes pyproject.toml | 4 +- unsloth/__init__.py | 4 +- unsloth/kernels/cross_entropy_loss.py | 2 - unsloth/kernels/rope_embedding.py | 8 +- unsloth/kernels/utils.py | 4 +- unsloth/models/llama.py | 139 ++- 12 files changed, 122 insertions(+), 3047 deletions(-) create mode 100644 images/LAION 2GPU.png delete mode 100644 images/LAION 2GPU.svg delete mode 100644 images/SlimOrca 1GPU.svg create mode 100644 images/try live demo green.png diff --git a/README.md b/README.md index 4580e83170..9c44e2628d 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,25 @@
+
- -## 80% faster 50% less memory local QLoRA finetuning +## 2-5x faster 50% less memory local LLM finetuning * Manual autograd engine - hand derived backprop steps. -* QLoRA / LoRA 80% faster, 50% less memory. -* All kernels written in OpenAI's Triton language. +* 2x to 5x faster than QLoRA. 50% less memory usage. +* All kernels written in [OpenAI's Triton](https://openai.com/research/triton) language. * 0% loss in accuracy - no approximation methods - all exact. -* No change of hardware necessary. Supports NVIDIA GPUs since 2018+. CUDA 7.5+. Tesla T4, RTX 20, 30, 40 series, A100, H100s -* Flash Attention support via Xformers. -* Supports 4bit and 16bit LoRA finetuning. +* No change of hardware necessary. Supports NVIDIA GPUs since 2018+. Minimum CUDA Compute Capability 7.0 (V100, T4, Titan V, RTX 20, 30, 40x, A100, H100, L40 etc) [Check your GPU](https://developer.nvidia.com/cuda-gpus) +* [Flash Attention v2](https://github.com/Dao-AILab/flash-attention) support via [Xformers](https://github.com/facebookresearch/xformers). +* **NEW!** Works on **Linux** and **Windows** via WSL. +* **NEW!** Experimental support for [DPO (Direct Preference Optimization)](https://arxiv.org/abs/2305.18290)! +* Supports 4bit and 16bit QLoRA / LoRA finetuning via [bitsandbytes](https://github.com/TimDettmers/bitsandbytes). * Train Slim Orca **fully locally in 260 hours from 1301 hours (5x faster).** * Open source version trains 5x faster or you can check out [Unsloth Pro and Max](https://unsloth.ai/) codepaths for **30x faster training**!
- +
1. Try our Colab examples for [the Alpaca 52K dataset](https://colab.research.google.com/drive/1oW55fBmwzCOrBVX66RcpptL3a99qWBxb?usp=sharing) or [the Slim Orca 518K dataset](https://colab.research.google.com/drive/1VNqLARpE8N8eYwNrUSDoHVjtbR9W0_c7?usp=sharing). @@ -49,7 +51,13 @@ pip install --upgrade --force-reinstall --no-cache-dir torch triton \ ``` Change `cu121` to `cu118` for CUDA version 11.8 or 12.1. Go to https://pytorch.org/ to learn more. -# Alpaca Example +4. If you get errors, try the below first, then go back to step 1: +``` +pip install --upgrade pip +``` + +# Documentation +We support Huggingface's TRL, Trainer, Seq2SeqTrainer or even Pytorch code! ``` from unsloth import FastLlamaModel import torch @@ -59,7 +67,7 @@ load_in_4bit = True # Use 4bit quantization to reduce memory usage. Can be False # Load Llama model model, tokenizer = FastLlamaModel.from_pretrained( - model_name = "unsloth/llama-2-7b", # Supports any llama model + model_name = "unsloth/llama-2-7b", # Supports any llama model eg meta-llama/Llama-2-7b-hf max_seq_length = max_seq_length, dtype = dtype, load_in_4bit = load_in_4bit, @@ -80,12 +88,16 @@ model = FastLlamaModel.get_peft_model( max_seq_length = max_seq_length, ) -trainer = .... Use Huggingface's Trainer and dataset loading +trainer = .... Use Huggingface's Trainer and dataset loading (TRL, transformers etc) ``` If you trained a model with Unsloth, we made a cool sticker!! +# DPO (Direct Preference Optimization) Experimental support +[152334H](https://github.com/152334H) hacked Unsloth to work with DPO via TRL! +1. Hack the model's `config.json` to be llama model. [Example gist](https://gist.github.com/152334H/d8a68b51b83bac008a02e69ecc81d5c1). +2. Use Unsloth for DPO for both base and reference models. [Example gist](https://gist.github.com/152334H/4847f3a8cca12894877e6b30698b0b64). # Future Milestones and limitations 1. Support sqrt gradient checkpointing which further slashes memory usage by 25%. @@ -94,6 +106,9 @@ If you trained a model with Unsloth, we made a cool sticker!! # Performance comparisons on 1 Tesla T4 GPU: **Time taken for 1 epoch** +One Tesla T4 on Google Colab +`bsz = 2, ga = 4, max_grad_norm = 0.3, num_train_epochs = 1, seed = 3047, lr = 2e-4, wd = 0.01, optim = "adamw_8bit", schedule = "linear", schedule_steps = 10` + | System | GPU | Alpaca (52K) | LAION OIG (210K) | Open Assistant (10K) | SlimOrca (518K) | | --- | --- | --- | --- | --- | --- | | Huggingface | 1 T4 | 23h 15m | 56h 28m | 8h 38m | 391h 41m | @@ -113,19 +128,28 @@ If you trained a model with Unsloth, we made a cool sticker!! # Performance comparisons on 2 Tesla T4 GPUs via DDP: **Time taken for 1 epoch** -| System | GPU | Alpaca (52K) | LAION OIG (210K) | Open Assistant (10K) | SlimOrca (518K) | +Two Tesla T4s on Kaggle +`bsz = 2, ga = 4, max_grad_norm = 0.3, num_train_epochs = 1, seed = 3047, lr = 2e-4, wd = 0.01, optim = "adamw_8bit", schedule = "linear", schedule_steps = 10` + +| System | GPU | Alpaca (52K) | LAION OIG (210K) | Open Assistant (10K) | SlimOrca (518K) * | | --- | --- | --- | --- | --- | --- | -| Huggingface | 2 T4 | 84h 47m | 163h 48m | 30h 51m | 1301h 24m | -| Unsloth Pro | 2 T4 | 3h 20m (25.4x) | 5h 43m (28.7x) | 1h 12m (25.7x) | 71h 40m (18.1x) | -| Unsloth Max | 2 T4 | 3h 4m (27.6x) | 5h 14m (31.3x) | 1h 6m (28.1x) | 54h 20m (23.9x) | +| Huggingface | 2 T4 | 84h 47m | 163h 48m | 30h 51m | 1301h 24m * | +| Unsloth Pro | 2 T4 | 3h 20m (25.4x) | 5h 43m (28.7x) | 1h 12m (25.7x) | 71h 40m (18.1x) * | +| Unsloth Max | 2 T4 | 3h 4m (27.6x) | 5h 14m (31.3x) | 1h 6m (28.1x) | 54h 20m (23.9x) * | **Peak Memory Usage on a Multi GPU System (2 GPUs)** -| System | GPU | Alpaca (52K) | LAION OIG (210K) | Open Assistant (10K) | SlimOrca (518K) | +| System | GPU | Alpaca (52K) | LAION OIG (210K) | Open Assistant (10K) | SlimOrca (518K) * | | --- | --- | --- | --- | --- | --- | -| Huggingface | 2 T4 | 8.4GB \| 6GB | 7.2GB \| 5.3GB | 14.3GB \| 6.6GB | 10.9GB \| 5.9GB | -| Unsloth Pro | 2 T4 | 7.7GB \| 4.9GB | 7.5GB \| 4.9GB | 8.5GB \| 4.9GB | 6.2GB \| 4.7GB | -| Unsloth Max | 2 T4 | 10.5GB \| 5GB | 10.6GB \| 5GB | 10.6GB \| 5GB | 10.5GB \| 5GB | +| Huggingface | 2 T4 | 8.4GB \| 6GB | 7.2GB \| 5.3GB | 14.3GB \| 6.6GB | 10.9GB \| 5.9GB * | +| Unsloth Pro | 2 T4 | 7.7GB \| 4.9GB | 7.5GB \| 4.9GB | 8.5GB \| 4.9GB | 6.2GB \| 4.7GB * | +| Unsloth Max | 2 T4 | 10.5GB \| 5GB | 10.6GB \| 5GB | 10.6GB \| 5GB | 10.5GB \| 5GB * | + +* Slim Orca `bsz=1` for all benchmarks since `bsz=2` OOMs. We can handle `bsz=2`, but we benchmark it with `bsz=1` for consistency. + +### For replication of timings: +* [Huggingface LAION DDP reference implementation](https://www.kaggle.com/code/danielhanchen/huggingface-original-laion-oig) 60 steps on DDP Kaggle 2 Tesla T4 GPUs takes 40 minutes and 46 seconds +* [Unsloth LAION DDP fast implementation](https://www.kaggle.com/code/danielhanchen/unsloth-laion-chip2-kaggle) 60 steps on DDP Kaggle 2 Tesla T4 GPUs - **Unsloth only uses 1 GPU whilst Pro plans use more.** takes 4 minutes and 34 seconds **(8.64x speedup)** # Troubleshooting 1. Sometimes `bitsandbytes` or `xformers` does not link properly. Try running: @@ -136,4 +160,8 @@ If you trained a model with Unsloth, we made a cool sticker!! 3. If it doesn't install - maybe try updating `pip`. +# Credits +1. [RandomInternetPreson](https://github.com/RandomInternetPreson) for confirming WSL support +2. [152334H](https://github.com/152334H) for experimental DPO support + diff --git a/images/Discord.png b/images/Discord.png index 00b4d53f78f96e6530fc280095bbbabffe350d26..e1a0e14a567462d744824f3957aafc15e4fe4bc4 100644 GIT binary patch literal 18382 zcmZs@byU>P7dMWgA}H`tK%|v!l$2T&knWV0mTr((P$Z-qq(Qoo&ZR`US(aXqC6-!x z*`=Oc{Ql1Qo%1~WxpUulW^T=$JNHGHnu;tT0VM$r4i2HboU{fG4lWP}=gz%{4=}%E zyfI3}!FhorFa1vIbH?5hej=%M7UD2H&W`NGh4JnMJ^MrUK+f=$@TTOYN!!L^KBu}? z>pg!y;Iin{aUqmbTmpsiO&bUB!{A#GVLRV~OV?rdD!)Ni_h_EHdJU{V&8CSH8ZXXM*%C< zIuQi-?+&PW)ayWNf_FZbJ=@+AuBgj%&~GIgQf(Eil%kop!-I{Te@X;Mn&9KhYUMb3 z{Va6!YO@+!mQE3eGPeL*CFWe9*U~9yHQt=W(ux!Fdzh()?v>rGRNIW6UsjMxmN+-s4RmQf>A*B-?`j`L4Z&Z7v4G7od#*BQ$yc{9eQiUdZd60NmnyOW(7tGb+^GOA{Y;B{$3lN1927a@ut-hUW@BfzvQf2$>$x8e z`R@Spp_*i%cuVWfgA)%Y+F8{F{?A{0^CF+R-i?SE*JZ33b=(V?{eDVC(j(+YMpc6} zkU7MDqZ4Q(V&fZ1bmS*&U)|vNTWw5#=HWBE+^R1Ph)CqMz0u|6*i0|?Y?Ck`HWm*D z=L^A8YO&6C_~mMr>KNVrb-6AvQc%U;^gpzHgNMP-n^J*^N4f#DblQ!fZ0VQ@zTE3f ztK4r<-)z>6p@m=Nn>aZ$kivi>l@efP!p%j;|0XO$lf9@_nfKB}{^^ING& z`V|&%`GOblOw%jzB>fJCmb!aQeazT1%n23rE2{waqFKnr*j09GXrd-*B1}<7ngv)N ztS*ir?3C$xceRwx9Cgf{`f8>%5jRs@(&U*%&xu#EOqHLP-pP>^lxhCS8HV&rAbx{g z8BL2>AhMl<#RqE2a6bG5&Fj4K@n=t9?}W{x6zM|VVC+g+xl_@?9`R1Abpy-yu}1ZV zX5%4{`D{(w z)9vEa8UoE_d~}vXmTt_DmHI|ZSsUSxfmI-i=EDL=Pvd{L!V7=Ww(fJIC}h0jTR*Ad z{XQ7vVe%(b0_nPSvEa$hB*VAst`a;IYlet{qm z^PgZH3oW>eRuDNE@fCHII;cNz_%~s-e6?rDO)y*+wUNAihkI^Z$XDfjxp#;m;h`Uv zhyAk*vE@dK8KoPNg3mdM+$WiDQteUwyW`*NAbq1ux9eezUHNXB#Y3Ax_BsE3{my4L znv-|}VCxy9Eo~}|&qrCKODCFfYAiRhLhGmt6FLlGoiAjP?LdP!7g5G_*hMU1e6!Xg z8;=yt5ysN7Yo*Ur_W8S-fCGrO5z8M4WOEoLp=tHM;)um{Zl*pcEv^3BVzD!AjL%sS zQdgYcHOM+@Dkf-63OcAg@hfJONW2q`H3J+X62Ff+D-*x++Bq`)%*2R3eap4v$Rn{N z2HYwS2d@<9?kV>^Z&1jz+^a-WHP&1T`gc8UpmsCJ`U%$HaNc~_Ggl4O63d!qjzMyH zn(@(4p#O&OF5$tW) zWRZ_gJNw`KzueLIz#1-GZ4spuH7BJ3=Na-g^j2JfO-r;_4a#P0!%Az7H{Hh$-7ikMWDqWX?o_{GAm~>o;^~4lr+WY_OR{{ybNvq< z@cg~@Pl=m7lAyi75Kzlf7^R>IRxoP07RP65$V#w>z*1d{Bu!wT3c~L)6@4MO3Ns4! zQ^vAzCK!;4k06-K2n+^60aPICA)&DAV4qu6I@1rlkB=b$*98WFdWZ57pjYNF*FulG zn9shHCiyW6m;4vneKy_*v~EKtjD=YJQ{PIW{(yXZ$}WJhAryr5+)SmXw|dQC`}aF* zLkMW4Y<0e>;WyqqiW0jDwNgeNdB>VsR6{VRp6V|HHhNm?vtWmwmnJPTq6R9ZEEKmC znUe%JgAbJcSyH|>2TI;GktTF7*+gWscbvw<_iunh9|D^ueQ{;D9djBw8gJYmIzMQH zMi^V3BCsO;;>s+naFhsknm8IqE)L})_$sgm1Wt|4!jB?OOPej<(~E5*aoQjCeA-K^M9gaa$raZQ48lo91x<|2B%R}JuQ{W!L9{*Rv} zzM>?w&(6#oU`#?a(tJDhr93D;!?G7q!+6q;3GB==C@hyw-uftE4kzzW5DFnvxvWl( z7`P?J*^wKKZ%ab(40D_WOR^u#8^lpW9${_m%epO-ll=bRCix~AdSjFr>Wn=}M!B%u zKByig!z%s!T}E>eD_#Rc$Iqk--HfqcbpqmB83WeQcZEYiLeGM#EdPmkwzA=Mz&c~m zc%xIm&!KLniINNhETigd7|(!dbDNqrE+1LGiMs`!qVSLc*ag zYk1vA!Al6FtBQ`J%+Snye!mrA=Rnp#Yr#sN~CTG zpVV?HW6;$RgyoSdXFiRx_>FYg)OAOld5`YlpvXJyN<$d?lsg86ki#87oh?y+`nh<* zxgp(_Sg%5*8)Fd6W3pXmO8srG+zSk`Gv$Cw{3a&Xp>aY(#|VISLce8R)z`LJP@Rlw zeV+jF$)b4UDDe{~IwYfHusbHwY4w!ay**IU1rN)|8~x4A-dO(<%V?J2)`fSQZI6XM zwm*mF;!**0s04dYZmwK47v1%(nDhML#u8*Wsdq8v^F@K#+i~}kB`sPIlW=zz<-4zo zmRiGxPd!pur>DmYS?^(N@{7Vu?50ZgdoTU1g+_@9OGINBx1WN7CU;l)(`dX^?4gn* zd6WTb8KtRjFKP6f2LP#r`tWMAs`!`OGpi+Smn_W-`eY zsxSK)odv70-|xc)rzF_0A$E>S4?mpjkjVta^&tiG_wTSe$RW*0-BAe!k+39id13An z&d(Ghl#DoKx)L?=$eT>lupyEC3ru9dtHjHP{lsA@d27fAG}&D@y6aqy8B=?SG5pMZ zt*r|y-!`7?FO%`}EJu>pyap&RzTBR6(ah-6T%J+Cple#`VJ4S|_*&m+t@ z<7)EVVe+E-G}cttD{VkiLe|8xS|7&%f|fjFyo0isL6=>22<*_f&4vMJuEU^7DJaQU&{o?W@8^QE71x)c+NDNRDVCwHXu2wl$=tn-51r?zLSFPa_|?}r$^X8MlCc-FbVW_$)*(g>K?1t8qZm2 zYsV&}gJeXnhQ2iG9Qb|gEAG|Qjs5E!%#A4m&|d2(WFU}8AcHFJdPbC#XJ@T^wH5tk z8**{d$+DQHVa|O}-0EoE!oR|wR;bm9(Ab-Ana;U(^Z>5|PLUE7I;wz0jjKx*ZQGOk z4^*o;8NVWG6x*!DITP&Um4%d-yba!h-NCyK_i$h@la5a~z*+4|dz@tD>$RifU(dXr ztND@eoThmW=9>$<2FXUzjBMU<7Qr{*DmAkGtrmlZUukbonAEHBRUT4A17K^HtF#_n z&9qmPrqY4X#4xe9_f`x`G9dq5Zw3_WFofvw+44Z5-H9WmJ<>it#OX~O^!C9x zTQ)pXrH?gRe73Rb66nPkcP9SFOo0ZV@RB?yQT}{qYO2ED&*|-wkJL5f3_--A#rchr zOSZ`q$GKW-bSgSquA!Wm2{(h&nu<5J)0({SbFxrLIeAoCM=!>YY^R>FAKY1gE3;== zx*3Bg8?>vyTuWR$7)PY?J{y))K%Mt+Rt)2h84=z@n5u@F0vNNIs3&X}{l9?gQF6_o z_Hg8Ad@-fqY+eX4pw*`+_AP5cp@c!7Kk$nY%=Zk1{-9%!*YDFjN+STSj4ITxcV%;W zRx4;Zc=nz_ytIWqht{97kxNf7fJT=C5ME+ec%BIHJ1VSIV z^(b6}r{$NYX08TlvrX*3m(01%u918>mR~-m2E^OvM4NvA9i{udO~hhkNkT%aD!C$Zo9y#Qe_9&{^Jnnv#EktW4o-peQI_X!5T!r zllK@20Si8mNV^ywLInyh(_MbNbF+}Knf*!oiG!NbVO=k(M;tAP-|oY2Ut{R;XE9Jt zx{AHvY*(>Zwc~q5_cc*ewwE7TsvZW1G3+|q!9Iddjj_-Nu>ZB#8F}g zTXrJZ9vV3ebP`}Nu#ls|BX%xR!T3u5M*3zWk^d{|CW~P@HeK#hJ zccSRQ30SMs$(U1W)VH<45nNPcAW@m?tl@AilKYG+YO4!M5O9+MwmrvG6AeO%Sik{S zmBtm&Pez+s07Srb4?DP0`50j&@+085Lj`s!I^z&oc5_S@&|*Ajz1cwJXS>*I+!H%h zTA=6w-_^h*ze9kNumXfE*t-W47Sw5b>|&^6T*!T=e->;&e;tzhf|sDjRL=t9qR&Y> z#{6$2nq`cIz(sf^N?5Jsw-wPXZtLQ8C>D=_zL$9=OWWgfANdz4oopjI?8uLIQet=f zAftqkYD`7rWTo0uN(o^;OF_>VtCGGug`nA6uq_In*y#7lFSL^qb!yLDedB*FuY|cA z{L0T%L0u2J#9dF`XAmp(;5hbm?rENy?ten-F?8x*?_h1%{%gEt=T*kLqbwFm?O|)T z9Le&{gd9u$nwdptJ%hXDQxQ!VVn8)l<|ecoSMw>`C!Uc9eA{J4J3R2EH{%0yob8(fw8l5_2CDrIf;aeRtUpdh3I{I1a5wU72&4tXp` zhc0K%JVZdL)$+!WTaXsRelI1f$4aTiC1EK(V06^$(`|z%ij^c!B^m1mzWs31U)NdJ z0z~XBG@n3Un%bXQzdpURn+fSq>edh`Sz|>~c)xA@+f(dg>bNQsuy=l47#*=F$~bJP z2uN_HyBPo)h7Lu+#4(k1#uMS#CA%R;drQi54UN^|(v>1r_^_$8^1S2b_iXA5T~Y?% zTzpZXCd;~Ko=x=Py;k?h>6rb8#fmb%V8plF_#bDVz%H>YJ5K|Bz*;4nCWJeAa0k?f9{yS(C&|kM zd5CW%h39?Z+ek)yu=}a#ULOYw>ckv%MD;`*XMP|WQI*uk;k~Fv6@bZ7W?JpB@5VR zvuj`|``T`)d^&Dzhefi!Q(lI(?*(q!{{| zT4(!UVvt~L2Nap=xcWkq8Sji^*jiBp<_fIlJrH1mWZ0x!Oy6AE)cY%sCX1D$kLd*K z#!6p+6YJoW3%J{r^Ov-<^K&XF;L{&gBf}k;R=eldgG!vD(Gh-?mDwAb0iHq}T?&~n zajpSet-fEa-xBO*72=9KP=l8Fze?QgaMYjIIA8N1swN?0Fp&x#%}JZ4W5EuPe@~bN zSE!P84Fit0ZYwsuTGn&E%QlKpTxy7|EZ*z){$7|w65%XYL_tXWuCiq@<@Dh@dbVIr z_MMQ9_4FnY&+c>a3qNj5nto*<)bF7o^U)RGd@dHDn4OhIxhT;J2rAbFRpO-2T(l_| zy?%|vQQz{sj-h+N8Nek9>S$bA(VZ%ys1hAXsYAs-YDbF`6(}Cjda2{p_==kVOcni_ z*={^=QP~oH+fYNUL=%E4d}3cF2uCs=GeT1dF0VtZ>BdzQnNYt((^JlV3sAn2L;b}zhi9&W#xpkD)(03oX z7XL{luK{QR5?GCB;pMOAb%o0xDypDqlrGqbynmj5n;*u_cK?V;;EJ6ZSWYySOYUF! zcW7K)G-;3Rry0NGHX;)Rzu6X8v+WRZeg*%5^Md9{OkdO9VUUJwG$Z)>8-BYc%Y5C8 z)+P}*xS^u3jl$EyLhEmf4M0)!qI&s03`9_!G>GSWekN9g*rA!xZoI|{s&@AtWi z))CzNEm=MEy^K7p9`iDn*qi*UnU`JvWuK3%ks+{7q;LjE0qL;jeaf*j6GC`Y{KW*m znKQY&l%fUnq3p0han8#N2Brk^T0sUd$^7(Uq$ zTRfscwewZVn+)hiw_=(MyLko(s zct(p;DBzz!C>3d_BRx$s{>^GqHSObqFJJ5_9cJ|6Kfc*+>kb77&yZ)>Ex(ID2DvC2 zir*+~EGYF~q_{QxWoW#XHYseRY7g+<>%tZDnaJ^`pk8ogA=XZ=jNI-^Cny>b_2(_Y zqtCMo3u4wQvsm|!QXVMInDE;8J&^Ao)$a+@2l2&7kZ44t+`vT{I@a1Htez>r?xZW> zD!HMlHZM3J=FNC%1M5EJC(eu2vb%}+#vW@P{@@MjcoX5+wj%HLa2Eg` zTT-OU_vQX8Hx{et4Pp|9K@C4L z?dfEx%-o(TdXpyX%$iHur6o>L_hfu54$0-mc^cP;LLz=ru4B!C%se z91nnOwm+#Noz!c3W2^6KB%-y((9Ds0eSC<{D0($CVsciH00&sjH?SF&c!NKf z8P4oIm*@9<<$v6IiTmB1bn3ndTli|CLSgR#!=I6BBw7p1`)*2A) zy>s{bW#y>}g%@u=*CcbRVxy?K?VwHr!$6V(fJ4P7Wg1jbw!$!@ah_+Oy9Rk2N;N~Y zL6xszAwG{Odx)6CO@{J7R5+^oTvdIq1&-AoZ(=uhS6-5iK!xBd?3;R1cY+6xhQq{n_h%N$Vc;aP z&C!@G(@D7nLH!A&a{~N(&4cbzqVGzmcy%cT*PaxO{oogw8KaqzCOccN^^hdL+{1G( zE4`gUPvK57u&WriaaO0?{@1A~R@;2n`Q~^PpDZ^D5~#y|gnl35;n@9NFE)Ha(UyNN z1ar&X*@>v&-zIe zzWIaG^TtZH`)D*U)`R_NU}T~9V8SKHW(GLRMX8wfV9L;bmQ<*{tHHtO$CJP=+{KW* zRa}rH}OR>o%qryB*4TgEFVE!MolaSSe)SnXf8_2ApyU^9rB;9ti84> zkop9xCXnQ_f+{^bD8pMeAueAv3i#qgl4n;yNnGzSZ}7nPvbVL}`Nx(z!13tLlp6H$ z57Q#O`ROuQOLDh&J`M)0N|4}S212MnYk%@%E4$o$hZ^Yo&DHxy9?;A?236)YETwbb zMCW|R@O`sq+&#*kY5xh}_8p!BtLXJK*pwYkyUx+){vb|=rCGa+CznppRhY68jbJRR z-ZnSd)h{DY?cExRMc?wushr55`I?(UhB8jP79NDj`ZyN?ehDA_HWa)kNY7NyxAdw_ zYj-aF6(O)h_4a|;bwknBNe<_iy(Ze2XMu`QZ;{DwrLqY@Cd+fn(xTl^w6z!B^lqp@scZmP^6Gq< z{iTdM}YaHpTIjf_O6|vz)4k9a+WPh)a%N=HH}OW=jDmE_m!c(eBjgypV>e%usqfG*R(QG0CA`0BB~a@*Xmw#? zU+u-ONc%CZ;+S)${SQ9GJdu0AHwchH>0n3MrorGFOsSnvl2roFD)A(3A$&EnL9KlM z@dF=AQs$|mS=1Xp{#;4Z)S1s`JaN&9b29b)QTN#Kbw;wh=7>viF0uz$Yl47Ie0#As zKgmjX88V#u-^Kt=7vz9I4WQ$kSrBzG#NnN4~lai-e^*BrZ+DY(x}N#DoR6W%}Krf)&CD=R$n*_R=!>L$>BD zhpWN^yBrJ6{f_fFm(#@|Q|(64+`ry}@48L0vm8%5#qS6>)Of$QuT`&kMx-yU&c4UV zU%T^Kb1653F=aMn-`B!s}7FU1%YK!>UsY~CKz)MS9Qa+z5ceJ{@QtWpnN0ZLCtovk# z_a>l?-9}!g*K9dhRk;6plbfmX!_249U2|#a0Yv_-YZgo#Xyb?N@^cWK+a-H@Y@zOJ zh%gii(1dG!c{;;OGgy2)Myly6ohN@aD=2$Lz7tzW4I&%0DPW5+Jq%nd;zwN(f)CXE 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 Y3(Vp|a^6fd1RBKP>FVdQ&MBb@09cfSG5`Po literal 58500 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 WxKI^+3;okd8w;8DOA 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 diff --git a/images/LAION 2GPU.png b/images/LAION 2GPU.png new file mode 100644 index 0000000000000000000000000000000000000000..d154a526dba66592c26dbb9ce4f1c60876150034 GIT binary patch literal 51428 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 literal 0 HcmV?d00001 diff --git a/images/LAION 2GPU.svg b/images/LAION 2GPU.svg deleted file mode 100644 index 724035676c..0000000000 --- a/images/LAION 2GPU.svg +++ /dev/null @@ -1,1518 +0,0 @@ - - - - - - - - 2023-11-30T13:10:10.501490 - image/svg+xml - - - Matplotlib v3.7.1, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/images/SlimOrca 1GPU.svg b/images/SlimOrca 1GPU.svg deleted file mode 100644 index a7861f7ad5..0000000000 --- a/images/SlimOrca 1GPU.svg +++ /dev/null @@ -1,1424 +0,0 @@ - - - - - - - - 2023-11-30T13:15:28.212061 - image/svg+xml - - - Matplotlib v3.7.1, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/images/try live demo green.png b/images/try live demo green.png new file mode 100644 index 0000000000000000000000000000000000000000..540ff5595feae0169b7af326cde9758ec347d2d7 GIT binary patch literal 15262 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 literal 0 HcmV?d00001 diff --git a/pyproject.toml b/pyproject.toml index 070ae2572e..09dd118414 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ exclude = ["images*"] [project.optional-dependencies] huggingface = [ - "transformers", + "transformers", "datasets", "sentencepiece", "accelerate", @@ -70,4 +70,4 @@ colab = [ [project.urls] homepage = "http://www.unsloth.ai" documentation = "https://github.com/unslothai/unsloth" -repository = "https://github.com/unslothai/unsloth" \ No newline at end of file +repository = "https://github.com/unslothai/unsloth" diff --git a/unsloth/__init__.py b/unsloth/__init__.py index 100625fac4..e9f8b5e65b 100644 --- a/unsloth/__init__.py +++ b/unsloth/__init__.py @@ -11,7 +11,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -__version__ = "2023.11" +__version__ = "2023.12" import os import warnings import importlib @@ -35,7 +35,7 @@ if "CUDA_VISIBLE_DEVICES" in os.environ: ) os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" else: - warnings.warn("Unsloth: 'CUDA_VISIBLE_DEVICES' is not set. We shall set it ourselves.") + # warnings.warn("Unsloth: 'CUDA_VISIBLE_DEVICES' is not set. We shall set it ourselves.") os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" os.environ["CUDA_VISIBLE_DEVICES"] = "0" pass diff --git a/unsloth/kernels/cross_entropy_loss.py b/unsloth/kernels/cross_entropy_loss.py index 175caab0d7..67ad306fcf 100644 --- a/unsloth/kernels/cross_entropy_loss.py +++ b/unsloth/kernels/cross_entropy_loss.py @@ -43,7 +43,6 @@ def _cross_entropy_forward(logits_ptr, logits_row_stride, mask = col_offsets < n_cols # TODO: Fixup int32 locations to int64 - # https://github.com/Dao-AILab/flash-attention/commit/c79de85ffa0d19b80fa468f90c5086e837499d72 label_idx = tl.load(labels_ptr).to(tl.int32) logits = tl.load(logits_ptr + col_offsets, mask = mask, other = -float("inf")).to(tl.float32) max_logits = tl.max(logits, 0) @@ -88,7 +87,6 @@ def _cross_entropy_backward(logits_ptr, logits_row_stride, col_offsets = tl.arange(0, BLOCK_SIZE) mask = col_offsets < n_cols # TODO: Fixup int32 locations to int64 - # https://github.com/Dao-AILab/flash-attention/commit/c79de85ffa0d19b80fa468f90c5086e837499d72 label_idx = tl.load(labels_ptr + row_idx).to(tl.int32) if label_idx != -100: diff --git a/unsloth/kernels/rope_embedding.py b/unsloth/kernels/rope_embedding.py index ee1b20f88f..99a7a50f47 100644 --- a/unsloth/kernels/rope_embedding.py +++ b/unsloth/kernels/rope_embedding.py @@ -35,7 +35,6 @@ def _rope_embedding( mask = col_offsets < half_head_dim # TODO: Fixup int32 locations to int64 - # https://github.com/Dao-AILab/flash-attention/commit/c79de85ffa0d19b80fa468f90c5086e837499d72 rot_position = row_position % seqlen Q += row_position* Q_row_stride + head_position*head_dim @@ -48,8 +47,6 @@ def _rope_embedding( Q2 = tl.load(Q + half_head_dim*1 + col_offsets, mask = mask, other = 0) # RoPE repeats sin and cos so 128 = [64, 64]. - # sin2 = tl.load(sin + half_head_dim*1, mask = mask, other = 0) - # cos2 = tl.load(cos + half_head_dim*1, mask = mask, other = 0) if BACKWARD_PASS: """ @@ -62,11 +59,8 @@ def _rope_embedding( where R.T is again the same [ 0, -I] but the minus is transposed. [ I, 0] """ - # sin1, sin2 = -sin1, -sin2 sin1 = -sin1 - - # tl.store(Q + half_head_dim*0, Q1*cos1 - Q2*sin1, mask = mask) - # tl.store(Q + half_head_dim*1, Q2*cos2 + Q1*sin2, mask = mask) + # RoPE repeats sin and cos so 128 = [64, 64]. tl.store(Q + half_head_dim*0 + col_offsets, Q1*cos1 - Q2*sin1, mask = mask) tl.store(Q + half_head_dim*1 + col_offsets, Q2*cos1 + Q1*sin1, mask = mask) diff --git a/unsloth/kernels/utils.py b/unsloth/kernels/utils.py index df4b85f0b6..34906a5a1a 100644 --- a/unsloth/kernels/utils.py +++ b/unsloth/kernels/utils.py @@ -13,12 +13,12 @@ # limitations under the License. import triton -MAX_FUSED_SIZE = 65535 # 2**16 - 1 +MAX_FUSED_SIZE = 65536 # 2**16 Solves https://github.com/unslothai/unsloth/issues/7 next_power_of_2 = triton.next_power_of_2 def calculate_settings(n): BLOCK_SIZE = next_power_of_2(n) - # CUDA only supports 65535 - 2^16-1 threads per block + # CUDA only supports 65536 - 2^16 threads per block if BLOCK_SIZE > MAX_FUSED_SIZE: raise RuntimeError(f"Cannot launch Triton kernel since n = {n} exceeds "\ f"the maximum CUDA blocksize = {MAX_FUSED_SIZE}.") diff --git a/unsloth/models/llama.py b/unsloth/models/llama.py index 8ab451f7d5..bfc0e26c0b 100644 --- a/unsloth/models/llama.py +++ b/unsloth/models/llama.py @@ -16,14 +16,15 @@ import torch from typing import Optional, Tuple, List, Union from torch.nn.functional import scaled_dot_product_attention from transformers.models.llama.modeling_llama import ( - # apply_rotary_pos_emb, - # repeat_kv, - # _prepare_4d_causal_attention_mask, + _prepare_4d_causal_attention_mask, logger, BaseModelOutputWithPast, CausalLMOutputWithPast, ) from ..kernels import * +from ._utils import ( + prepare_model_for_kbit_training, +) # Get Flash Attention v2 if Ampere (RTX 30xx, A100) major_version, minor_version = torch.cuda.get_device_capability() @@ -37,7 +38,6 @@ else: # Tri Dao's benchmark shows xformers is faster for now. HAS_FLASH_ATTENTION = False pass - import xformers.ops.fmha as xformers xformers_attention = xformers.memory_efficient_attention @@ -55,12 +55,9 @@ import bitsandbytes as bnb import numpy as np import types -from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig +from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig, AutoConfig from transformers import set_seed as transformers_set_seed from peft import LoraConfig, TaskType, get_peft_model as _get_peft_model -from ._utils import ( - prepare_model_for_kbit_training, -) def original_apply_qkv(self, X): @@ -92,10 +89,6 @@ def LlamaAttention_fast_forward( ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: bsz, q_len, _ = hidden_states.size() - - # Q = self.q_proj(hidden_states) - # K = self.k_proj(hidden_states) - # V = self.v_proj(hidden_states) Q, K, V = self.apply_qkv(self, hidden_states) n_heads = self.num_heads @@ -112,8 +105,6 @@ def LlamaAttention_fast_forward( if past_key_value is not None: kv_seq_len += past_key_value[0].shape[-2] - # cos, sin = self.rotary_emb(V, seq_len = kv_seq_len) - # Q, K = apply_rotary_pos_emb(Q, K, cos, sin, position_ids) if position_ids is None: cos = self.rotary_emb.cos_cached sin = self.rotary_emb.sin_cached @@ -130,10 +121,9 @@ def LlamaAttention_fast_forward( past_key_value = (K, V) if use_cache else None # Attention module - # no_attention_mask = attention_mask is None - # Ignore attention_mask - - if (not HAS_FLASH_ATTENTION): #and no_attention_mask: + # Xformers doesnt support backward pass for GQA (yet) + # TEMP fix + if (n_groups == 1) and (not HAS_FLASH_ATTENTION): # Xformers memory efficient attention # Also has Flash Attention v2 dispatching # (batch_size, n_heads, seq_len, head_dim) -> (batch_size, seq_len, n_heads, head_dim) @@ -143,18 +133,17 @@ def LlamaAttention_fast_forward( # Grouped query attention if n_groups != 1: - Q = Q.reshape(bsz, q_len, n_groups, n_kv_heads, head_dim) - - K = K.reshape(bsz, q_len, n_groups, 1, head_dim) - V = V.reshape(bsz, q_len, n_groups, 1, head_dim) - K = K .expand(bsz, q_len, n_groups, n_kv_heads, head_dim) - V = V .expand(bsz, q_len, n_groups, n_kv_heads, head_dim) + Q = Q.reshape(bsz, q_len, n_kv_heads, n_groups, head_dim) + K = K.reshape(bsz, q_len, n_kv_heads, 1, head_dim) + V = V.reshape(bsz, q_len, n_kv_heads, 1, head_dim) + K = K .expand(bsz, q_len, n_kv_heads, n_groups, head_dim) + V = V .expand(bsz, q_len, n_kv_heads, n_groups, head_dim) pass A = xformers_attention(Q, K, V, attn_bias = causal_mask) A = A.view(bsz, q_len, n_heads, head_dim) - elif HAS_FLASH_ATTENTION:# and no_attention_mask: + elif HAS_FLASH_ATTENTION: # Flash Attention # (batch_size, n_heads, seq_len, head_dim) -> (batch_size, seq_len, n_heads, head_dim) Q = Q.transpose(1, 2) @@ -163,37 +152,22 @@ def LlamaAttention_fast_forward( # Flash Attention v2 auto supports grouped query attention A = flash_attn_func(Q, K, V, causal = True) - else: - # Uses Pytorch's scaled dot product attention - if attention_mask is not None: - if attention_mask.size() != (bsz, 1, q_len, kv_seq_len): - raise ValueError( - f"Attention mask should be of size {(bsz, 1, q_len, kv_seq_len)}, but is {attention_mask.size()}" - ) - pass - # Grouped query attention - # K = repeat_kv(K, n_groups) - # V = repeat_kv(V, n_groups) if n_groups != 1: K = K[:, :, None, :, :].expand(bsz, n_kv_heads, n_groups, q_len, head_dim) V = V[:, :, None, :, :].expand(bsz, n_kv_heads, n_groups, q_len, head_dim) K = K.reshape(bsz, n_heads, q_len, head_dim) V = V.reshape(bsz, n_heads, q_len, head_dim) pass - # Needs (batch_size, n_heads, seq_len, head_dim) # is_casual and attention_mask must not be both set! - A = scaled_dot_product_attention(Q, K, V, attn_mask = attention_mask, is_causal = attention_mask is None) + A = scaled_dot_product_attention(Q, K, V, attn_mask = None, is_causal = True) # Go back to (batch_size, seq_len, n_heads, head_dim) A = A.transpose(1, 2) pass attn_output = A.reshape(bsz, q_len, self.hidden_size) - - # attn_output = self.o_proj(attn_output) attn_output = self.apply_o(self, attn_output) - attn_weights = None return attn_output, attn_weights, past_key_value pass @@ -227,7 +201,6 @@ def LlamaDecoderLayer_fast_forward( """ residual = hidden_states - # hidden_states = self.input_layernorm(hidden_states) hidden_states = fast_rms_layernorm(self.input_layernorm, hidden_states) # Self Attention @@ -245,7 +218,6 @@ def LlamaDecoderLayer_fast_forward( # Fully Connected residual = hidden_states - # hidden_states = self.post_attention_layernorm(hidden_states) hidden_states = fast_rms_layernorm(self.post_attention_layernorm, hidden_states) hidden_states = self.mlp(hidden_states) hidden_states = residual + hidden_states @@ -308,7 +280,7 @@ def LlamaModel_fast_forward( if (past_key_values_length != 0): position_ids = torch.arange( past_key_values_length, seq_length + past_key_values_length, - dtype = torch.int32,#dtype=torch.long, + dtype = torch.int32, device = "cuda", ) position_ids = position_ids.unsqueeze(0).view(-1, seq_length) @@ -326,11 +298,7 @@ def LlamaModel_fast_forward( inputs_embeds = self.embed_tokens(input_ids) # Ignore attention_mask - if True: - # if attention_mask is None: - # attention_mask = torch.ones( - # (batch_size, seq_length_with_past), dtype=torch.bool, device=inputs_embeds.device - # ) + if attention_mask is None: padding_mask = None else: if 0 in attention_mask: @@ -339,7 +307,7 @@ def LlamaModel_fast_forward( padding_mask = None attention_mask = _prepare_4d_causal_attention_mask( - attention_mask, (batch_size, seq_length), inputs_embeds, past_key_values_length + attention_mask, (batch_size, seq_length), inputs_embeds, past_key_values_length, ) pass @@ -403,7 +371,6 @@ def LlamaModel_fast_forward( all_self_attns += (layer_outputs[1],) pass - # hidden_states = self.norm(hidden_states) hidden_states = fast_rms_layernorm(self.norm, hidden_states) # add hidden states from the last decoder layer @@ -466,19 +433,13 @@ def LlamaForCausalLM_fast_forward( loss = None if labels is not None: - # logits = logits.float() - # shift_logits = logits[..., :-1, :].contiguous() - # shift_labels = labels[..., 1:].contiguous() - # shift_labels = shift_labels.view(-1) - # shift_logits = shift_logits.view(-1, self.config.vocab_size) shift_logits = logits + if not hasattr(self, "extra_ignored_labels"): + # Fixes https://github.com/unslothai/unsloth/issues/10 + self.extra_ignored_labels = torch.full((self.max_seq_length, 1), -100, device = "cuda") + pass + shift_labels = torch.hstack((labels[..., 1:], self.extra_ignored_labels[:labels.shape[0]])) - - # loss_fct = torch.nn.CrossEntropyLoss( - # ignore_index = self.ignore_index, - # label_smoothing = self.label_smoothing, - # ) - # loss = loss_fct(shift_logits, shift_labels) loss = fast_cross_entropy_loss( logits = shift_logits, labels = shift_labels, @@ -547,13 +508,14 @@ class FastLlamaModel: load_in_4bit = True, token = None, device_map = "sequential", + rope_scaling = None, ): gpu_stats = torch.cuda.get_device_properties(0) max_memory = round(gpu_stats.total_memory / 1024 / 1024 / 1024, 3) SUPPORTS_BFLOAT16 = torch.cuda.is_bf16_supported() statistics = \ - "==((====))== Unsloth: Fast Llama patching release 23.11\n"\ + "==((====))== Unsloth: Fast Llama patching release 2023.12\n"\ f" \\\ /| GPU: {gpu_stats.name}. Max memory: {max_memory} GB\n"\ f"O^O/ \_/ \\ CUDA compute capability = {gpu_stats.major}.{gpu_stats.minor}\n"\ f"\ / Pytorch version: {torch.__version__}. CUDA Toolkit = {torch.version.cuda}\n"\ @@ -570,9 +532,20 @@ class FastLlamaModel: assert(dtype == torch.float16 or dtype == torch.bfloat16 or dtype == torch.float32) - # [TODO]: Determine RoPE scaling - # https://github.com/huggingface/transformers/pull/24653 - assert(max_seq_length <= 4096) + # RoPE scaling + model_max_seq_length = \ + AutoConfig.from_pretrained(model_name, token = token).max_position_embeddings + + if (rope_scaling is None) and (max_seq_length > model_max_seq_length): + rope_scaling = max_seq_length / model_max_seq_length + logger.warning_once( + f"Unsloth: {model_name} can only handle sequence lengths of of most "\ + f"{model_max_seq_length}.\nBut with kaiokendev's RoPE scaling of "\ + f"{round(rope_scaling, 3)}, it can be magically be extended to "\ + f"{max_seq_length}!" + ) + rope_scaling = {"type": "linear", "factor": rope_scaling,} + pass bnb_config = None if load_in_4bit: @@ -589,6 +562,7 @@ class FastLlamaModel: torch_dtype = dtype, quantization_config = bnb_config, token = token, + rope_scaling = rope_scaling, ) tokenizer = AutoTokenizer.from_pretrained( model_name, @@ -596,9 +570,22 @@ class FastLlamaModel: padding_side = "right", token = token, ) - tokenizer.add_special_tokens({"pad_token" : tokenizer.unk_token}); - tokenizer.pad_token = tokenizer.unk_token - config = model.config.update({"pad_token_id" : tokenizer.unk_token_id}); + + if not hasattr(tokenizer, "pad_token"): + # Fixes https://github.com/unslothai/unsloth/issues/5 + if hasattr(tokenizer, "unk_token"): + tokenizer.add_special_tokens({"pad_token" : tokenizer.unk_token}) + tokenizer.pad_token = tokenizer.unk_token + else: + logger.warning_one( + f"{model_name} does not have a padding or unknown token!\n"\ + f"Will use the EOS token of id {tokenizer.eos_token_id} as padding." + ) + assert(hasattr(tokenizer, "eos_token")) + tokenizer.add_special_tokens({"pad_token" : tokenizer.eos_token}) + tokenizer.pad_token = tokenizer.eos_token + config = model.config.update({"pad_token_id" : tokenizer.eos_token_id}) + pass model = FastLlamaModel.post_patch(model) @@ -607,6 +594,8 @@ class FastLlamaModel: layer.self_attn.apply_qkv = original_apply_qkv layer.self_attn.apply_o = original_apply_o pass + + model.max_seq_length = max_seq_length return model, tokenizer pass @@ -668,6 +657,8 @@ class FastLlamaModel: random_state = 3407, max_seq_length = 2048, ): + assert(max_seq_length <= model.max_seq_length) + if lora_dropout != 0: raise TypeError("Unsloth: Fast Llama patching only works with dropout = 0.") if bias != "none": @@ -727,8 +718,14 @@ class FastLlamaModel: pass # Patch cross entropy loss labels - model.model.extra_ignored_labels = torch.full((max_seq_length, 1), -100, device = "cuda") - + # Fixes https://github.com/unslothai/unsloth/issues/10 + extra_ignored_labels = torch.full((max_seq_length, 1), -100, device = "cuda") + model.model.extra_ignored_labels = extra_ignored_labels + internal_model = model + while hasattr(internal_model, "model"): + internal_model.max_seq_length = max_seq_length + internal_model = internal_model.model + pass return model pass pass