{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/lq-lora-low-rank-plus-quantized-matrix","title":"LQ-LoRA: Low-rank Plus Quantized Matrix Decomposition for Efficient Language Model Finetuning","arxiv_id":"2311.12023","date":"2023-11-20","proceeding":null,"authors":["Han Guo","Philip Greengard","Eric P. Xing","Yoon Kim"],"abstract":"We propose a simple approach for memory-efficient adaptation of pretrained language models. Our approach uses an iterative algorithm to decompose each pretrained matrix into a high-precision low-rank component and a memory-efficient quantized component. During finetuning, the quantized component remains fixed and only the low-rank component is updated. We present an integer linear programming formulation of the quantization component which enables dynamic configuration of quantization parameters (e.g., bit-width, block size) for each matrix given an overall target memory budget. We further explore a data-aware version of the algorithm which uses an approximation of the Fisher information matrix to weight the reconstruction objective during matrix decomposition. Experiments on finetuning RoBERTa and LLaMA-2 (7B and 70B) demonstrate that our low-rank plus quantized matrix decomposition approach (LQ-LoRA) outperforms strong QLoRA and GPTQ-LoRA baselines and enables aggressive quantization to sub-3 bits with only minor performance degradations. When finetuned on a language modeling calibration dataset, LQ-LoRA can also be used for model compression; in this setting our 2.75-bit LLaMA-2-70B model (which has 2.85 bits on average when including the low-rank components and requires 27GB of GPU memory) performs respectably compared to the 16-bit baseline.","url_abs":"https://arxiv.org/abs/2311.12023v4","url_pdf":"https://arxiv.org/pdf/2311.12023v4.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"lq-lora-low-rank-plus-quantized-matrix","repo_url":"https://github.com/hanguo97/lq-lora","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":null,"task_name":"GPU"},{"task_slug":"language-modeling","task_name":"Language Modeling"},{"task_slug":"language-modelling","task_name":"Language Modelling"},{"task_slug":"model-compression","task_name":"Model Compression"},{"task_slug":"quantization","task_name":"Quantization"}],"methods":[{"method_slug":"adam","method_name":"Adam"},{"method_slug":"attention","method_name":"Attention"},{"method_slug":"attention-dropout","method_name":"Attention Dropout"},{"method_slug":"bert","method_name":"BERT"},{"method_slug":"dense-connections","method_name":"Dense Connections"},{"method_slug":"dropout","method_name":"Dropout"},{"method_slug":"layer-normalization","method_name":"Layer Normalization"},{"method_slug":"linear-layer","method_name":"Linear Layer"},{"method_slug":"linear-warmup-with-linear-decay","method_name":"Linear Warmup With Linear Decay"},{"method_slug":"multi-head-attention","method_name":"Multi-Head Attention"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"roberta","method_name":"RoBERTa"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"weight-decay","method_name":"Weight Decay"},{"method_slug":"wordpiece","method_name":"WordPiece"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2311.12023","atlas_url":"https://app.syntology.ai/?focus=2311.12023","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2311.12023"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/hanguo97/lq-lora","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":7,"unverified":5},"by_repo_kind":{"official":{"samples":12,"ran":7,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"a3d0d1e07441f8ff","entry":"compute_empirical_Fisher_RoBERTa","repo":"hanguo97/lq-lora","repo_kind":"official","path":"models/allocation_utils_2.py","file_url":"https://github.com/hanguo97/lq-lora/blob/HEAD/models/allocation_utils_2.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a3d0d1e07441f8ff"}},{"code_sha256_prefix":"40ba32e8f13af3e2","entry":"create_normal_float_scheme","repo":"hanguo97/lq-lora","repo_kind":"official","path":"models/quantization_utils.py","file_url":"https://github.com/hanguo97/lq-lora/blob/HEAD/models/quantization_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"40ba32e8f13af3e2"}},{"code_sha256_prefix":"3175476f3e4363e4","entry":"create_quantization_scheme","repo":"hanguo97/lq-lora","repo_kind":"official","path":"models/quantization_utils.py","file_url":"https://github.com/hanguo97/lq-lora/blob/HEAD/models/quantization_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3175476f3e4363e4"}},{"code_sha256_prefix":"def1ac254e2bf2ca","entry":"pack_bools_into_integers","repo":"hanguo97/lq-lora","repo_kind":"official","path":"models/packbits_utils.py","file_url":"https://github.com/hanguo97/lq-lora/blob/HEAD/models/packbits_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"def1ac254e2bf2ca"}},{"code_sha256_prefix":"3a5ac3bc042f6593","entry":"quantize_with_scheme","repo":"hanguo97/lq-lora","repo_kind":"official","path":"models/quantization_utils.py","file_url":"https://github.com/hanguo97/lq-lora/blob/HEAD/models/quantization_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3a5ac3bc042f6593"}},{"code_sha256_prefix":"426e5a6d0c6824e8","entry":"svd_decomposition","repo":"hanguo97/lq-lora","repo_kind":"official","path":"models/factorizations_utils.py","file_url":"https://github.com/hanguo97/lq-lora/blob/HEAD/models/factorizations_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"426e5a6d0c6824e8"}},{"code_sha256_prefix":"27c3361a9d756b76","entry":"weighted_svd_decomposition","repo":"hanguo97/lq-lora","repo_kind":"official","path":"models/factorizations_utils.py","file_url":"https://github.com/hanguo97/lq-lora/blob/HEAD/models/factorizations_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"27c3361a9d756b76"}},{"code_sha256_prefix":"e6327c65d67b9b9d","entry":"apply_three_tensor_op","repo":"hanguo97/lq-lora","repo_kind":"official","path":"models/tensor_container_utils.py","file_url":"https://github.com/hanguo97/lq-lora/blob/HEAD/models/tensor_container_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e6327c65d67b9b9d"}},{"code_sha256_prefix":"75320a91f402092b","entry":"compute_empirical_Fisher_LLaMA","repo":"hanguo97/lq-lora","repo_kind":"official","path":"models/allocation_utils.py","file_url":"https://github.com/hanguo97/lq-lora/blob/HEAD/models/allocation_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"75320a91f402092b"}},{"code_sha256_prefix":"4e9c1bc486b3cb15","entry":"from_binary","repo":"hanguo97/lq-lora","repo_kind":"official","path":"models/packbits_utils.py","file_url":"https://github.com/hanguo97/lq-lora/blob/HEAD/models/packbits_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4e9c1bc486b3cb15"}},{"code_sha256_prefix":"adc7b34aa6bae5f9","entry":"get_hf_quantization_config","repo":"hanguo97/lq-lora","repo_kind":"official","path":"models/lora_utils.py","file_url":"https://github.com/hanguo97/lq-lora/blob/HEAD/models/lora_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"adc7b34aa6bae5f9"}},{"code_sha256_prefix":"2327775e49455531","entry":"to_binary","repo":"hanguo97/lq-lora","repo_kind":"official","path":"models/packbits_utils.py","file_url":"https://github.com/hanguo97/lq-lora/blob/HEAD/models/packbits_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2327775e49455531"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}