{"library":"loralib","title":"PyTorch LoRA Library (loralib)","description":"loralib provides a PyTorch implementation of Low-Rank Adaptation (LoRA), a parameter-efficient fine-tuning method for large deep learning models. It enables adapting models with performance comparable to full fine-tuning while significantly reducing trainable parameters and memory footprint. The library is currently at version 0.1.2 and appears to be actively maintained by Microsoft, though PyPI updates are infrequent, with core development often reflected in GitHub activities like checkpoint releases.","language":"python","status":"active","last_verified":"Mon May 18","install":{"commands":["pip install loralib"],"cli":null},"imports":["import loralib as lora","from loralib import Linear","import loralib as lora\nlora.mark_only_lora_as_trainable(model)","import loralib as lora\ntorch.save(lora.lora_state_dict(model), 'lora_weights.pt')"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import torch\nimport torch.nn as nn\nimport loralib as lora\n\nclass MyModel(nn.Module):\n    def __init__(self):\n        super().__init__()\n        self.linear1 = nn.Linear(10, 20)\n        self.linear2 = nn.Linear(20, 5)\n\n    def forward(self, x):\n        return self.linear2(self.linear1(x))\n\n# 1. Instantiate the base model\nbase_model = MyModel()\n\n# 2. Convert a layer to its LoRA equivalent\n# Replace nn.Linear with lora.Linear, specifying rank 'r'\n# Here, we convert linear1 to a LoRA-enabled layer\nbase_model.linear1 = lora.Linear(base_model.linear1.in_features, base_model.linear1.out_features, r=4)\n\n# (Optional: Convert more layers)\n# base_model.linear2 = lora.Linear(base_model.linear2.in_features, base_model.linear2.out_features, r=4)\n\n# 3. Mark only LoRA parameters as trainable\nlora.mark_only_lora_as_trainable(base_model)\n\n# Verify trainable parameters\nprint(\"Trainable parameters after LoRA conversion:\")\nfor name, param in base_model.named_parameters():\n    if param.requires_grad:\n        print(f\"  {name}: {param.shape}\")\n\n# Example usage (forward pass)\ninput_tensor = torch.randn(1, 10)\noutput_tensor = base_model(input_tensor)\nprint(f\"Output shape: {output_tensor.shape}\")\n\n# 4. Save only the LoRA-specific state_dict\nlora_weights = lora.lora_state_dict(base_model)\n# torch.save(lora_weights, 'my_model_lora.pt')","lang":"python","description":"This quickstart demonstrates how to integrate loralib into an existing PyTorch model. It involves replacing target `nn.Linear` (or `nn.Embedding`, `nn.Conv2d`) layers with their `lora.Linear` counterparts, then marking only the newly introduced LoRA parameters as trainable, and finally, saving only these LoRA-specific weights for efficient deployment.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"0.1.2","pypi_latest":"0.1.2","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.5,"avg_import_s":null,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"loralib","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"17.8M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"loralib","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.4,"import_time_s":null,"mem_mb":null,"disk_size":"18M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"loralib","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"19.7M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"loralib","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.6,"import_time_s":null,"mem_mb":null,"disk_size":"20M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"loralib","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"11.6M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"loralib","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.5,"import_time_s":null,"mem_mb":null,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"loralib","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"11.3M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"loralib","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.5,"import_time_s":null,"mem_mb":null,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"loralib","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"17.3M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"loralib","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.7,"import_time_s":null,"mem_mb":null,"disk_size":"18M"}]}}