There are a couple of ways to apply Liger kernels, depending on the level of customization required. ### 1. Use AutoLigerKernelForCausalLM Using the `AutoLigerKernelForCausalLM` is the simplest approach, as you don't have to import a model-specific patching API. If the model type is supported, the modeling code will be automatically patched using the default settings. !!! Example ```python from liger_kernel.transformers import AutoLigerKernelForCausalLM # This AutoModel wrapper class automatically monkey-patches the # model with the optimized Liger kernels if the model is supported. model = AutoLigerKernelForCausalLM.from_pretrained("path/to/some/model") ``` ### 2. Apply Model-Specific Patching APIs Using the [patching APIs](https://github.com/linkedin/Liger-Kernel?tab=readme-ov-file#patching), you can swap Hugging Face models with optimized Liger Kernels. !!! Example ```python import transformers from liger_kernel.transformers import apply_liger_kernel_to_llama # 1a. Adding this line automatically monkey-patches the model with the optimized Liger kernels apply_liger_kernel_to_llama() # 1b. You could alternatively specify exactly which kernels are applied apply_liger_kernel_to_llama( rope=True, swiglu=True, cross_entropy=True, fused_linear_cross_entropy=False, rms_norm=False ) # 2. Instantiate patched model model = transformers.AutoModelForCausalLM("path/to/llama/model") ``` ### 3. Compose Your Own Model You can take individual [kernels](https://github.com/linkedin/Liger-Kernel?tab=readme-ov-file#model-kernels) to compose your models. !!! Example ```python from liger_kernel.transformers import LigerFusedLinearCrossEntropyLoss import torch.nn as nn import torch model = nn.Linear(128, 256).cuda() # fuses linear + cross entropy layers together and performs chunk-by-chunk computation to reduce memory loss_fn = LigerFusedLinearCrossEntropyLoss() input = torch.randn(4, 128, requires_grad=True, device="cuda") target = torch.randint(256, (4, ), device="cuda") loss = loss_fn(model.weight, input, target) loss.backward() ```