{"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/memory-efficient-meta-learning-with-large","title":"Memory Efficient Meta-Learning with Large Images","arxiv_id":"2107.01105","date":"2021-07-02","proceeding":"NeurIPS 2021 12","authors":["John Bronskill","Daniela Massiceti","Massimiliano Patacchiola","Katja Hofmann","Sebastian Nowozin","Richard E. Turner"],"abstract":"Meta learning approaches to few-shot classification are computationally efficient at test time, requiring just a few optimization steps or single forward pass to learn a new task, but they remain highly memory-intensive to train. This limitation arises because a task's entire support set, which can contain up to 1000 images, must be processed before an optimization step can be taken. Harnessing the performance gains offered by large images thus requires either parallelizing the meta-learner across multiple GPUs, which may not be available, or trade-offs between task and image size when memory constraints apply. We improve on both options by proposing LITE, a general and memory efficient episodic training scheme that enables meta-training on large tasks composed of large images on a single GPU. We achieve this by observing that the gradients for a task can be decomposed into a sum of gradients over the task's training images. This enables us to perform a forward pass on a task's entire training set but realize significant memory savings by back-propagating only a random subset of these images which we show is an unbiased approximation of the full gradient. We use LITE to train meta-learners and demonstrate new state-of-the-art accuracy on the real-world ORBIT benchmark and 3 of the 4 parts of the challenging VTAB+MD benchmark relative to leading meta-learners. LITE also enables meta-learners to be competitive with transfer learning approaches but at a fraction of the test-time computational cost, thus serving as a counterpoint to the recent narrative that transfer learning is all you need for few-shot classification.","url_abs":"https://arxiv.org/abs/2107.01105v2","url_pdf":"https://arxiv.org/pdf/2107.01105v2.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":"memory-efficient-meta-learning-with-large","repo_url":"https://github.com/cambridge-mlg/LITE","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"memory-efficient-meta-learning-with-large","repo_url":"https://github.com/microsoft/ORBIT-Dataset","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"few-shot-image-classification","task_name":"Few-Shot Image Classification"},{"task_slug":null,"task_name":"GPU"},{"task_slug":"meta-learning","task_name":"Meta-Learning"},{"task_slug":"transfer-learning","task_name":"Transfer Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/few-shot-image-classification-on-orbit-clean","task":"Few-Shot Image Classification","dataset":"ORBIT Clean Video Evaluation","model":"SimpleCNAPs + LITE","rank_in_archive_order":1,"of":2,"metrics":{"Frame accuracy":"82.70"},"uses_additional_data":false},{"leaderboard":"/sota/few-shot-image-classification-on-orbit","task":"Few-Shot Image Classification","dataset":"ORBIT Clutter Video Evaluation","model":"ProtoNets + LITE","rank_in_archive_order":2,"of":3,"metrics":{"Frame accuracy":"66.3"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2107.01105","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2107.01105"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+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/cambridge-mlg/LITE","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/microsoft/ORBIT-Dataset","reach":null}],"summary":{"ran_fixture":1,"ran_draft_wrong":2,"unverified":6},"by_repo_kind":{"official":{"samples":9,"ran":3,"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":"d3319e3d34ca90ca","entry":"drop_connect","repo":"cambridge-mlg/LITE","repo_kind":"official","path":"src/efficientnet_utils.py","file_url":"https://github.com/cambridge-mlg/LITE/blob/HEAD/src/efficientnet_utils.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d3319e3d34ca90ca"}},{"code_sha256_prefix":"f15a49337e69e937","entry":"round_filters","repo":"cambridge-mlg/LITE","repo_kind":"official","path":"src/efficientnet_utils.py","file_url":"https://github.com/cambridge-mlg/LITE/blob/HEAD/src/efficientnet_utils.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f15a49337e69e937"}},{"code_sha256_prefix":"dbc0ca08d119a5a0","entry":"round_repeats","repo":"cambridge-mlg/LITE","repo_kind":"official","path":"src/efficientnet_utils.py","file_url":"https://github.com/cambridge-mlg/LITE/blob/HEAD/src/efficientnet_utils.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"dbc0ca08d119a5a0"}},{"code_sha256_prefix":"335818a6c090235f","entry":"compute_accuracy","repo":"cambridge-mlg/LITE","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/cambridge-mlg/LITE/blob/HEAD/src/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":"335818a6c090235f"}},{"code_sha256_prefix":"759f34460246377f","entry":"create_film_adapter","repo":"cambridge-mlg/LITE","repo_kind":"official","path":"src/features.py","file_url":"https://github.com/cambridge-mlg/LITE/blob/HEAD/src/features.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":"759f34460246377f"}},{"code_sha256_prefix":"a521b8c61c81ecdd","entry":"cross_entropy_loss","repo":"cambridge-mlg/LITE","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/cambridge-mlg/LITE/blob/HEAD/src/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":"a521b8c61c81ecdd"}},{"code_sha256_prefix":"a0c64af1bc66fb1f","entry":"film","repo":"cambridge-mlg/LITE","repo_kind":"official","path":"src/efficientnet.py","file_url":"https://github.com/cambridge-mlg/LITE/blob/HEAD/src/efficientnet.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":"a0c64af1bc66fb1f"}},{"code_sha256_prefix":"083d7c12137fe0b7","entry":"mean_pooling","repo":"cambridge-mlg/LITE","repo_kind":"official","path":"src/set_encoder.py","file_url":"https://github.com/cambridge-mlg/LITE/blob/HEAD/src/set_encoder.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":"083d7c12137fe0b7"}},{"code_sha256_prefix":"e3e669ad7a0bde46","entry":"shuffle","repo":"cambridge-mlg/LITE","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/cambridge-mlg/LITE/blob/HEAD/src/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":"e3e669ad7a0bde46"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}