{"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/unpacking-sdxl-turbo-interpreting-text-to","title":"Unpacking SDXL Turbo: Interpreting Text-to-Image Models with Sparse Autoencoders","arxiv_id":"2410.22366","date":"2024-10-28","proceeding":null,"authors":["Viacheslav Surkov","Chris Wendler","Mikhail Terekhov","Justin Deschenaux","Robert West","Caglar Gulcehre"],"abstract":"Sparse autoencoders (SAEs) have become a core ingredient in the reverse engineering of large-language models (LLMs). For LLMs, they have been shown to decompose intermediate representations that often are not interpretable directly into sparse sums of interpretable features, facilitating better control and subsequent analysis. However, similar analyses and approaches have been lacking for text-to-image models. We investigated the possibility of using SAEs to learn interpretable features for a few-step text-to-image diffusion models, such as SDXL Turbo. To this end, we train SAEs on the updates performed by transformer blocks within SDXL Turbo's denoising U-net. We find that their learned features are interpretable, causally influence the generation process, and reveal specialization among the blocks. In particular, we find one block that deals mainly with image composition, one that is mainly responsible for adding local details, and one for color, illumination, and style. Therefore, our work is an important first step towards better understanding the internals of generative text-to-image models like SDXL Turbo and showcases the potential of features learned by SAEs for the visual domain. Code is available at https://github.com/surkovv/sdxl-unbox","url_abs":"https://arxiv.org/abs/2410.22366v2","url_pdf":"https://arxiv.org/pdf/2410.22366v2.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":"unpacking-sdxl-turbo-interpreting-text-to","repo_url":"https://github.com/surkovv/sdxl-unbox","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"denoising","task_name":"Denoising"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2410.22366","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2410.22366"}},"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/surkovv/sdxl-unbox","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":4},"by_repo_kind":{"official":{"samples":4,"ran":0,"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":"809505b9f5ea00b0","entry":"add_feature","repo":"surkovv/sdxl-unbox","repo_kind":"official","path":"utils/hooks.py","file_url":"https://github.com/surkovv/sdxl-unbox/blob/HEAD/utils/hooks.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":"809505b9f5ea00b0"}},{"code_sha256_prefix":"2cd254cbecb4c027","entry":"add_feature_on_area_base","repo":"surkovv/sdxl-unbox","repo_kind":"official","path":"utils/hooks.py","file_url":"https://github.com/surkovv/sdxl-unbox/blob/HEAD/utils/hooks.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":"2cd254cbecb4c027"}},{"code_sha256_prefix":"74d970e267d552a1","entry":"add_feature_on_area_base_both","repo":"surkovv/sdxl-unbox","repo_kind":"official","path":"utils/hooks.py","file_url":"https://github.com/surkovv/sdxl-unbox/blob/HEAD/utils/hooks.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":"74d970e267d552a1"}},{"code_sha256_prefix":"8b3022444bceb9b4","entry":"retrieve","repo":"surkovv/sdxl-unbox","repo_kind":"official","path":"SDLens/hooked_sd_pipeline.py","file_url":"https://github.com/surkovv/sdxl-unbox/blob/HEAD/SDLens/hooked_sd_pipeline.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":"8b3022444bceb9b4"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}