InvokeAI 5.0.2__tar.gz → 5.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (569) hide show
  1. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/InvokeAI.egg-info/PKG-INFO +2 -2
  2. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/InvokeAI.egg-info/SOURCES.txt +6 -3
  3. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/InvokeAI.egg-info/requires.txt +4 -3
  4. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/PKG-INFO +2 -2
  5. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/README.md +1 -1
  6. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/flux_denoise.py +5 -1
  7. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/config.py +18 -1
  8. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/model_loaders/flux.py +49 -0
  9. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/probe.py +12 -7
  10. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/search.py +1 -1
  11. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/util/model_util.py +7 -1
  12. InvokeAI-5.1.0/invokeai/backend/quantization/gguf/ggml_tensor.py +152 -0
  13. InvokeAI-5.1.0/invokeai/backend/quantization/gguf/loaders.py +22 -0
  14. InvokeAI-5.1.0/invokeai/backend/quantization/gguf/utils.py +308 -0
  15. InvokeAI-5.1.0/invokeai/frontend/web/dist/assets/App-DIWPmKhe.js +124 -0
  16. InvokeAI-5.0.2/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-CGYUFFev.js → InvokeAI-5.1.0/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-CRJdOC9C.js +1 -1
  17. InvokeAI-5.1.0/invokeai/frontend/web/dist/assets/index-oRALkRAJ.js +509 -0
  18. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/index.html +1 -1
  19. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/de.json +102 -8
  20. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/en.json +16 -6
  21. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/es.json +0 -2
  22. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/fi.json +1 -2
  23. InvokeAI-5.1.0/invokeai/frontend/web/dist/locales/fr.json +1134 -0
  24. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/it.json +416 -16
  25. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/ja.json +0 -2
  26. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/ko.json +1 -3
  27. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/nl.json +0 -2
  28. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/pl.json +0 -1
  29. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/pt.json +1 -3
  30. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/ru.json +553 -33
  31. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/sv.json +1 -2
  32. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/tr.json +0 -2
  33. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/uk.json +0 -1
  34. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/zh_CN.json +2 -3
  35. InvokeAI-5.1.0/invokeai/version/invokeai_version.py +1 -0
  36. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/pyproject.toml +4 -3
  37. InvokeAI-5.0.2/invokeai/frontend/web/dist/assets/App-CsIbq0US.js +0 -124
  38. InvokeAI-5.0.2/invokeai/frontend/web/dist/assets/index-DXIqgMot.js +0 -509
  39. InvokeAI-5.0.2/invokeai/frontend/web/dist/locales/fr.json +0 -418
  40. InvokeAI-5.0.2/invokeai/version/invokeai_version.py +0 -1
  41. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/InvokeAI.egg-info/dependency_links.txt +0 -0
  42. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/InvokeAI.egg-info/entry_points.txt +0 -0
  43. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/InvokeAI.egg-info/top_level.txt +0 -0
  44. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/LICENSE +0 -0
  45. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/LICENSE-SD1+SD2.txt +0 -0
  46. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/LICENSE-SDXL.txt +0 -0
  47. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/__init__.py +0 -0
  48. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/api/dependencies.py +0 -0
  49. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/api/no_cache_staticfiles.py +0 -0
  50. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/api/routers/app_info.py +0 -0
  51. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/api/routers/board_images.py +0 -0
  52. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/api/routers/boards.py +0 -0
  53. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/api/routers/download_queue.py +0 -0
  54. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/api/routers/images.py +0 -0
  55. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/api/routers/model_manager.py +0 -0
  56. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/api/routers/session_queue.py +0 -0
  57. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/api/routers/style_presets.py +0 -0
  58. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/api/routers/utilities.py +0 -0
  59. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/api/routers/workflows.py +0 -0
  60. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/api/sockets.py +0 -0
  61. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/api_app.py +0 -0
  62. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/assets/images/caution.png +0 -0
  63. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/__init__.py +0 -0
  64. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/baseinvocation.py +0 -0
  65. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/blend_latents.py +0 -0
  66. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/canny.py +0 -0
  67. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/collections.py +0 -0
  68. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/color_map.py +0 -0
  69. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/compel.py +0 -0
  70. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/constants.py +0 -0
  71. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/content_shuffle.py +0 -0
  72. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/controlnet_image_processors.py +0 -0
  73. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/create_denoise_mask.py +0 -0
  74. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/create_gradient_mask.py +0 -0
  75. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/crop_latents.py +0 -0
  76. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/custom_nodes/README.md +0 -0
  77. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/custom_nodes/init.py +0 -0
  78. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/cv.py +0 -0
  79. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/denoise_latents.py +0 -0
  80. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/depth_anything.py +0 -0
  81. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/dw_openpose.py +0 -0
  82. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/facetools.py +0 -0
  83. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/fields.py +0 -0
  84. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/flux_lora_loader.py +0 -0
  85. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/flux_text_encoder.py +0 -0
  86. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/flux_vae_decode.py +0 -0
  87. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/flux_vae_encode.py +0 -0
  88. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/grounding_dino.py +0 -0
  89. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/hed.py +0 -0
  90. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/ideal_size.py +0 -0
  91. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/image.py +0 -0
  92. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/image_to_latents.py +0 -0
  93. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/infill.py +0 -0
  94. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/ip_adapter.py +0 -0
  95. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/latents_to_image.py +0 -0
  96. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/lineart.py +0 -0
  97. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/lineart_anime.py +0 -0
  98. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/mask.py +0 -0
  99. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/math.py +0 -0
  100. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/mediapipe_face.py +0 -0
  101. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/metadata.py +0 -0
  102. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/mlsd.py +0 -0
  103. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/model.py +0 -0
  104. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/noise.py +0 -0
  105. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/normal_bae.py +0 -0
  106. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/param_easing.py +0 -0
  107. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/pidi.py +0 -0
  108. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/primitives.py +0 -0
  109. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/prompt.py +0 -0
  110. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/resize_latents.py +0 -0
  111. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/scheduler.py +0 -0
  112. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/sdxl.py +0 -0
  113. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/segment_anything.py +0 -0
  114. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/spandrel_image_to_image.py +0 -0
  115. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/strings.py +0 -0
  116. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/t2i_adapter.py +0 -0
  117. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/tiled_multi_diffusion_denoise_latents.py +0 -0
  118. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/tiles.py +0 -0
  119. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/upscale.py +0 -0
  120. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/invocations/util.py +0 -0
  121. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/run_app.py +0 -0
  122. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/__init__.py +0 -0
  123. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/board_image_records/__init__.py +0 -0
  124. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/board_image_records/board_image_records_base.py +0 -0
  125. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/board_image_records/board_image_records_sqlite.py +0 -0
  126. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/board_images/__init__.py +0 -0
  127. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/board_images/board_images_base.py +0 -0
  128. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/board_images/board_images_common.py +0 -0
  129. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/board_images/board_images_default.py +0 -0
  130. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/board_records/board_records_base.py +0 -0
  131. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/board_records/board_records_common.py +0 -0
  132. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/board_records/board_records_sqlite.py +0 -0
  133. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/boards/__init__.py +0 -0
  134. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/boards/boards_base.py +0 -0
  135. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/boards/boards_common.py +0 -0
  136. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/boards/boards_default.py +0 -0
  137. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/bulk_download/__init__.py +0 -0
  138. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/bulk_download/bulk_download_base.py +0 -0
  139. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/bulk_download/bulk_download_common.py +0 -0
  140. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/bulk_download/bulk_download_default.py +0 -0
  141. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/config/__init__.py +0 -0
  142. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/config/config_common.py +0 -0
  143. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/config/config_default.py +0 -0
  144. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/download/__init__.py +0 -0
  145. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/download/download_base.py +0 -0
  146. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/download/download_default.py +0 -0
  147. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/events/__init__.py +0 -0
  148. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/events/events_base.py +0 -0
  149. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/events/events_common.py +0 -0
  150. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/events/events_fastapievents.py +0 -0
  151. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/image_files/__init__.py +0 -0
  152. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/image_files/image_files_base.py +0 -0
  153. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/image_files/image_files_common.py +0 -0
  154. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/image_files/image_files_disk.py +0 -0
  155. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/image_records/__init__.py +0 -0
  156. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/image_records/image_records_base.py +0 -0
  157. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/image_records/image_records_common.py +0 -0
  158. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/image_records/image_records_sqlite.py +0 -0
  159. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/images/__init__.py +0 -0
  160. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/images/images_base.py +0 -0
  161. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/images/images_common.py +0 -0
  162. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/images/images_default.py +0 -0
  163. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/invocation_cache/__init__.py +0 -0
  164. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/invocation_cache/invocation_cache_base.py +0 -0
  165. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/invocation_cache/invocation_cache_common.py +0 -0
  166. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/invocation_cache/invocation_cache_memory.py +0 -0
  167. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/invocation_services.py +0 -0
  168. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/invocation_stats/__init__.py +0 -0
  169. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/invocation_stats/invocation_stats_base.py +0 -0
  170. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/invocation_stats/invocation_stats_common.py +0 -0
  171. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/invocation_stats/invocation_stats_default.py +0 -0
  172. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/invoker.py +0 -0
  173. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/item_storage/__init__.py +0 -0
  174. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/item_storage/item_storage_base.py +0 -0
  175. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/item_storage/item_storage_common.py +0 -0
  176. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/item_storage/item_storage_memory.py +0 -0
  177. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/model_images/model_images_base.py +0 -0
  178. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/model_images/model_images_common.py +0 -0
  179. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/model_images/model_images_default.py +0 -0
  180. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/model_install/__init__.py +0 -0
  181. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/model_install/model_install_base.py +0 -0
  182. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/model_install/model_install_common.py +0 -0
  183. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/model_install/model_install_default.py +0 -0
  184. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/model_load/__init__.py +0 -0
  185. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/model_load/model_load_base.py +0 -0
  186. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/model_load/model_load_default.py +0 -0
  187. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/model_manager/__init__.py +0 -0
  188. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/model_manager/model_manager_base.py +0 -0
  189. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/model_manager/model_manager_common.py +0 -0
  190. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/model_manager/model_manager_default.py +0 -0
  191. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/model_records/__init__.py +0 -0
  192. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/model_records/model_records_base.py +0 -0
  193. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/model_records/model_records_sql.py +0 -0
  194. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/names/__init__.py +0 -0
  195. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/names/names_base.py +0 -0
  196. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/names/names_common.py +0 -0
  197. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/names/names_default.py +0 -0
  198. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/object_serializer/object_serializer_base.py +0 -0
  199. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/object_serializer/object_serializer_common.py +0 -0
  200. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/object_serializer/object_serializer_disk.py +0 -0
  201. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/object_serializer/object_serializer_forward_cache.py +0 -0
  202. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/session_processor/__init__.py +0 -0
  203. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/session_processor/session_processor_base.py +0 -0
  204. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/session_processor/session_processor_common.py +0 -0
  205. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/session_processor/session_processor_default.py +0 -0
  206. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/session_queue/__init__.py +0 -0
  207. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/session_queue/session_queue_base.py +0 -0
  208. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/session_queue/session_queue_common.py +0 -0
  209. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/session_queue/session_queue_sqlite.py +0 -0
  210. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/__init__.py +0 -0
  211. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/graph.py +0 -0
  212. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/invocation_context.py +0 -0
  213. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/pagination.py +0 -0
  214. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite/__init__.py +0 -0
  215. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite/sqlite_common.py +0 -0
  216. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite/sqlite_database.py +0 -0
  217. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite/sqlite_util.py +0 -0
  218. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite_migrator/__init__.py +0 -0
  219. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/__init__.py +0 -0
  220. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_1.py +0 -0
  221. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_10.py +0 -0
  222. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_11.py +0 -0
  223. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_12.py +0 -0
  224. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_13.py +0 -0
  225. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_14.py +0 -0
  226. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_15.py +0 -0
  227. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2.py +0 -0
  228. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_3.py +0 -0
  229. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_4.py +0 -0
  230. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_5.py +0 -0
  231. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_6.py +0 -0
  232. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_7.py +0 -0
  233. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_8.py +0 -0
  234. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_9.py +0 -0
  235. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_common.py +0 -0
  236. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_impl.py +0 -0
  237. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/default_style_preset_images/Anime.png +0 -0
  238. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/default_style_preset_images/Architectural Visualization.png +0 -0
  239. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Character).png +0 -0
  240. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Fantasy).png +0 -0
  241. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Painterly).png +0 -0
  242. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Sci-Fi).png +0 -0
  243. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/default_style_preset_images/Environment Art.png +0 -0
  244. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/default_style_preset_images/Illustration.png +0 -0
  245. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/default_style_preset_images/Interior Design (Visualization).png +0 -0
  246. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/default_style_preset_images/Line Art.png +0 -0
  247. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Black and White).png +0 -0
  248. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (General).png +0 -0
  249. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Landscape).png +0 -0
  250. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Portrait).png +0 -0
  251. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Studio Lighting).png +0 -0
  252. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/default_style_preset_images/Product Rendering.png +0 -0
  253. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/default_style_preset_images/Sketch.png +0 -0
  254. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/default_style_preset_images/Vehicles.png +0 -0
  255. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/default_style_preset_images/__init__.py +0 -0
  256. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/style_preset_images_base.py +0 -0
  257. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/style_preset_images_common.py +0 -0
  258. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_images/style_preset_images_disk.py +0 -0
  259. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_records/__init__.py +0 -0
  260. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_records/default_style_presets.json +0 -0
  261. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_records/style_preset_records_base.py +0 -0
  262. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_records/style_preset_records_common.py +0 -0
  263. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/style_preset_records/style_preset_records_sqlite.py +0 -0
  264. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/urls/__init__.py +0 -0
  265. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/urls/urls_base.py +0 -0
  266. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/urls/urls_default.py +0 -0
  267. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/workflow_records/__init__.py +0 -0
  268. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json +0 -0
  269. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/workflow_records/default_workflows/FLUX Image to Image.json +0 -0
  270. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json +0 -0
  271. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/workflow_records/default_workflows/Flux Text to Image.json +0 -0
  272. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json +0 -0
  273. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SD1.5.json +0 -0
  274. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SDXL.json +0 -0
  275. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/workflow_records/default_workflows/Prompt from File.json +0 -0
  276. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SD1.5.json +0 -0
  277. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SDXL.json +0 -0
  278. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/workflow_records/default_workflows/Text to Image with LoRA.json +0 -0
  279. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/workflow_records/default_workflows/Tiled Upscaling (Beta).json +0 -0
  280. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/workflow_records/workflow_records_base.py +0 -0
  281. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/workflow_records/workflow_records_common.py +0 -0
  282. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/services/workflow_records/workflow_records_sqlite.py +0 -0
  283. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/shared/__init__.py +0 -0
  284. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/shared/models.py +0 -0
  285. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/util/__init__.py +0 -0
  286. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/util/controlnet_utils.py +0 -0
  287. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/util/custom_openapi.py +0 -0
  288. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/util/metaenum.py +0 -0
  289. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/util/misc.py +0 -0
  290. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/util/model_exclude_null.py +0 -0
  291. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/util/profiler.py +0 -0
  292. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/util/step_callback.py +0 -0
  293. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/util/suppress_output.py +0 -0
  294. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/util/thumbnails.py +0 -0
  295. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/app/util/ti_utils.py +0 -0
  296. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/assets/fonts/inter/Inter-Regular.ttf +0 -0
  297. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/__init__.py +0 -0
  298. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/flux/denoise.py +0 -0
  299. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/flux/inpaint_extension.py +0 -0
  300. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/flux/math.py +0 -0
  301. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/flux/model.py +0 -0
  302. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/flux/modules/autoencoder.py +0 -0
  303. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/flux/modules/conditioner.py +0 -0
  304. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/flux/modules/layers.py +0 -0
  305. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/flux/sampling_utils.py +0 -0
  306. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/flux/util.py +0 -0
  307. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/__init__.py +0 -0
  308. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/basicsr/__init__.py +0 -0
  309. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/basicsr/arch_util.py +0 -0
  310. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/basicsr/rrdbnet_arch.py +0 -0
  311. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/canny.py +0 -0
  312. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/content_shuffle.py +0 -0
  313. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/depth_anything/depth_anything_pipeline.py +0 -0
  314. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/dw_openpose/__init__.py +0 -0
  315. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/dw_openpose/onnxdet.py +0 -0
  316. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/dw_openpose/onnxpose.py +0 -0
  317. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/dw_openpose/utils.py +0 -0
  318. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/dw_openpose/wholebody.py +0 -0
  319. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/grounding_dino/__init__.py +0 -0
  320. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/grounding_dino/detection_result.py +0 -0
  321. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/grounding_dino/grounding_dino_pipeline.py +0 -0
  322. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/hed.py +0 -0
  323. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/infill_methods/cv2_inpaint.py +0 -0
  324. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/infill_methods/lama.py +0 -0
  325. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/infill_methods/mosaic.py +0 -0
  326. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/infill_methods/patchmatch.py +0 -0
  327. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/infill_methods/tile.py +0 -0
  328. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/invisible_watermark.py +0 -0
  329. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/lineart.py +0 -0
  330. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/lineart_anime.py +0 -0
  331. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/mediapipe_face/__init__.py +0 -0
  332. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/mediapipe_face/mediapipe_face_common.py +0 -0
  333. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/mlsd/__init__.py +0 -0
  334. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/mlsd/models/__init__.py +0 -0
  335. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/mlsd/models/mbv2_mlsd_large.py +0 -0
  336. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/mlsd/models/mbv2_mlsd_tiny.py +0 -0
  337. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/mlsd/utils.py +0 -0
  338. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/__init__.py +0 -0
  339. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/NNET.py +0 -0
  340. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/__init__.py +0 -0
  341. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/baseline.py +0 -0
  342. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/__init__.py +0 -0
  343. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/decoder.py +0 -0
  344. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/__init__.py +0 -0
  345. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/caffe2_benchmark.py +0 -0
  346. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/caffe2_validate.py +0 -0
  347. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/__init__.py +0 -0
  348. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/__init__.py +0 -0
  349. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/activations.py +0 -0
  350. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/activations_jit.py +0 -0
  351. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/activations_me.py +0 -0
  352. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/config.py +0 -0
  353. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/conv2d_layers.py +0 -0
  354. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/efficientnet_builder.py +0 -0
  355. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/gen_efficientnet.py +0 -0
  356. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/helpers.py +0 -0
  357. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/mobilenetv3.py +0 -0
  358. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/model_factory.py +0 -0
  359. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/version.py +0 -0
  360. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/hubconf.py +0 -0
  361. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_export.py +0 -0
  362. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_optimize.py +0 -0
  363. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_to_caffe.py +0 -0
  364. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_validate.py +0 -0
  365. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/setup.py +0 -0
  366. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/utils.py +0 -0
  367. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/validate.py +0 -0
  368. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/encoder.py +0 -0
  369. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/normal_bae/nets/submodules/submodules.py +0 -0
  370. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/pidi/__init__.py +0 -0
  371. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/pidi/model.py +0 -0
  372. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/pngwriter.py +0 -0
  373. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/realesrgan/__init__.py +0 -0
  374. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/realesrgan/realesrgan.py +0 -0
  375. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/safety_checker.py +0 -0
  376. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/segment_anything/__init__.py +0 -0
  377. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/segment_anything/mask_refinement.py +0 -0
  378. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/segment_anything/segment_anything_pipeline.py +0 -0
  379. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/image_util/util.py +0 -0
  380. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/ip_adapter/__init__.py +0 -0
  381. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/ip_adapter/ip_adapter.py +0 -0
  382. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/ip_adapter/ip_attention_weights.py +0 -0
  383. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/ip_adapter/resampler.py +0 -0
  384. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/__init__.py +0 -0
  385. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/conversions/__init__.py +0 -0
  386. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/conversions/flux_diffusers_lora_conversion_utils.py +0 -0
  387. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/conversions/flux_kohya_lora_conversion_utils.py +0 -0
  388. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/conversions/flux_lora_constants.py +0 -0
  389. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/conversions/sd_lora_conversion_utils.py +0 -0
  390. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/conversions/sdxl_lora_conversion_utils.py +0 -0
  391. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/layers/__init__.py +0 -0
  392. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/layers/any_lora_layer.py +0 -0
  393. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/layers/concatenated_lora_layer.py +0 -0
  394. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/layers/full_layer.py +0 -0
  395. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/layers/ia3_layer.py +0 -0
  396. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/layers/loha_layer.py +0 -0
  397. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/layers/lokr_layer.py +0 -0
  398. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/layers/lora_layer.py +0 -0
  399. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/layers/lora_layer_base.py +0 -0
  400. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/layers/norm_layer.py +0 -0
  401. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/layers/utils.py +0 -0
  402. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/lora_model_raw.py +0 -0
  403. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/lora_patcher.py +0 -0
  404. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/sidecar_layers/__init__.py +0 -0
  405. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/sidecar_layers/concatenated_lora/__init__.py +0 -0
  406. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/sidecar_layers/concatenated_lora/concatenated_lora_linear_sidecar_layer.py +0 -0
  407. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/sidecar_layers/lora/__init__.py +0 -0
  408. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/sidecar_layers/lora/lora_linear_sidecar_layer.py +0 -0
  409. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/sidecar_layers/lora_sidecar_layer.py +0 -0
  410. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/lora/sidecar_layers/lora_sidecar_module.py +0 -0
  411. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_hash/hash_validator.py +0 -0
  412. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_hash/model_hash.py +0 -0
  413. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/__init__.py +0 -0
  414. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/__init__.py +0 -0
  415. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/load_base.py +0 -0
  416. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/load_default.py +0 -0
  417. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/memory_snapshot.py +0 -0
  418. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/model_cache/__init__.py +0 -0
  419. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/model_cache/model_cache_base.py +0 -0
  420. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/model_cache/model_cache_default.py +0 -0
  421. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/model_cache/model_locker.py +0 -0
  422. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/model_loader_registry.py +0 -0
  423. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/model_loaders/__init__.py +0 -0
  424. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/model_loaders/controlnet.py +0 -0
  425. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py +0 -0
  426. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/model_loaders/ip_adapter.py +0 -0
  427. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/model_loaders/lora.py +0 -0
  428. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/model_loaders/onnx.py +0 -0
  429. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/model_loaders/spandrel_image_to_image.py +0 -0
  430. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py +0 -0
  431. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/model_loaders/textual_inversion.py +0 -0
  432. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/model_loaders/vae.py +0 -0
  433. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/model_util.py +0 -0
  434. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/load/optimizations.py +0 -0
  435. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/merge.py +0 -0
  436. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/metadata/__init__.py +0 -0
  437. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/metadata/fetch/__init__.py +0 -0
  438. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/metadata/fetch/fetch_base.py +0 -0
  439. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/metadata/fetch/huggingface.py +0 -0
  440. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/metadata/metadata_base.py +0 -0
  441. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/starter_models.py +0 -0
  442. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/util/libc_util.py +0 -0
  443. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_manager/util/select_hf_files.py +0 -0
  444. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/model_patcher.py +0 -0
  445. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/onnx/onnx_runtime.py +0 -0
  446. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/quantization/__init__.py +0 -0
  447. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/quantization/bnb_llm_int8.py +0 -0
  448. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/quantization/bnb_nf4.py +0 -0
  449. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/quantization/scripts/load_flux_model_bnb_llm_int8.py +0 -0
  450. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/quantization/scripts/load_flux_model_bnb_nf4.py +0 -0
  451. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/quantization/scripts/quantize_t5_xxl_bnb_llm_int8.py +0 -0
  452. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/raw_model.py +0 -0
  453. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/spandrel_image_to_image_model.py +0 -0
  454. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/__init__.py +0 -0
  455. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/denoise_context.py +0 -0
  456. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/diffusers_pipeline.py +0 -0
  457. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/diffusion/__init__.py +0 -0
  458. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py +0 -0
  459. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/diffusion/custom_atttention.py +0 -0
  460. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/diffusion/regional_ip_data.py +0 -0
  461. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/diffusion/regional_prompt_data.py +0 -0
  462. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py +0 -0
  463. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/diffusion/unet_attention_patcher.py +0 -0
  464. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/diffusion_backend.py +0 -0
  465. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/extension_callback_type.py +0 -0
  466. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/extensions/base.py +0 -0
  467. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/extensions/controlnet.py +0 -0
  468. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/extensions/freeu.py +0 -0
  469. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/extensions/inpaint.py +0 -0
  470. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/extensions/inpaint_model.py +0 -0
  471. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/extensions/lora.py +0 -0
  472. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/extensions/preview.py +0 -0
  473. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/extensions/rescale_cfg.py +0 -0
  474. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/extensions/seamless.py +0 -0
  475. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/extensions/t2i_adapter.py +0 -0
  476. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/extensions_manager.py +0 -0
  477. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/multi_diffusion_pipeline.py +0 -0
  478. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/schedulers/__init__.py +0 -0
  479. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/schedulers/schedulers.py +0 -0
  480. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/stable_diffusion/vae_tiling.py +0 -0
  481. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/textual_inversion.py +0 -0
  482. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/tiles/__init__.py +0 -0
  483. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/tiles/tiles.py +0 -0
  484. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/tiles/utils.py +0 -0
  485. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/util/__init__.py +0 -0
  486. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/util/attention.py +0 -0
  487. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/util/build_line.py +0 -0
  488. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/util/calc_tensor_size.py +0 -0
  489. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/util/catch_sigint.py +0 -0
  490. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/util/db_maintenance.py +0 -0
  491. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/util/devices.py +0 -0
  492. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/util/hotfixes.py +0 -0
  493. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/util/logging.py +0 -0
  494. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/util/mask.py +0 -0
  495. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/util/mps_fixes.py +0 -0
  496. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/util/original_weights_storage.py +0 -0
  497. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/util/silence_warnings.py +0 -0
  498. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/util/test_utils.py +0 -0
  499. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/backend/util/util.py +0 -0
  500. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/configs/controlnet/cldm_v15.yaml +0 -0
  501. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/configs/controlnet/cldm_v21.yaml +0 -0
  502. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/configs/stable-diffusion/sd_xl_base.yaml +0 -0
  503. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/configs/stable-diffusion/sd_xl_inpaint.yaml +0 -0
  504. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/configs/stable-diffusion/sd_xl_refiner.yaml +0 -0
  505. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/configs/stable-diffusion/v1-finetune.yaml +0 -0
  506. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/configs/stable-diffusion/v1-finetune_style.yaml +0 -0
  507. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/configs/stable-diffusion/v1-inference-v.yaml +0 -0
  508. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/configs/stable-diffusion/v1-inference.yaml +0 -0
  509. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/configs/stable-diffusion/v1-inpainting-inference.yaml +0 -0
  510. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/configs/stable-diffusion/v1-m1-finetune.yaml +0 -0
  511. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/configs/stable-diffusion/v2-inference-v.yaml +0 -0
  512. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/configs/stable-diffusion/v2-inference.yaml +0 -0
  513. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/configs/stable-diffusion/v2-inpainting-inference-v.yaml +0 -0
  514. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/configs/stable-diffusion/v2-inpainting-inference.yaml +0 -0
  515. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/configs/stable-diffusion/v2-midas-inference.yaml +0 -0
  516. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/__init__.py +0 -0
  517. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/cli/__init__.py +0 -0
  518. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/cli/arg_parser.py +0 -0
  519. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/install/__init__.py +0 -0
  520. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/install/import_images.py +0 -0
  521. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/__init__.py +0 -0
  522. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/App-DEu4J2pT.css +0 -0
  523. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-B2NxUfIp.css +0 -0
  524. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/commercial-license-bg-C_dHp7on.png +0 -0
  525. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/commercial-license-bg.png +0 -0
  526. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-alert-favicon.svg +0 -0
  527. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-avatar-circle.svg +0 -0
  528. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-avatar-square.svg +0 -0
  529. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-favicon.png +0 -0
  530. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-favicon.svg +0 -0
  531. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-key-char-lrg.svg +0 -0
  532. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-key-char-sml.svg +0 -0
  533. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-lrg.svg +0 -0
  534. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-sml.svg +0 -0
  535. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-lrg.svg +0 -0
  536. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-sml.svg +0 -0
  537. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-lrg.svg +0 -0
  538. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-sml.svg +0 -0
  539. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-symbol-ylw-lrg.svg +0 -0
  540. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-lrg.svg +0 -0
  541. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-sml.svg +0 -0
  542. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-tag-lrg.svg +0 -0
  543. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-tag-sml.svg +0 -0
  544. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-charcoal.svg +0 -0
  545. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-white.svg +0 -0
  546. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/images/mask.svg +0 -0
  547. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2 +0 -0
  548. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2 +0 -0
  549. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2 +0 -0
  550. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/inter-greek-wght-normal-CaVNZxsx.woff2 +0 -0
  551. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CFHvXkgd.woff2 +0 -0
  552. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/inter-latin-wght-normal-C2S99t-D.woff2 +0 -0
  553. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  554. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/assets/worker-Dywf1EVc.js +0 -0
  555. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/ar.json +0 -0
  556. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/az.json +0 -0
  557. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/bg.json +0 -0
  558. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/he.json +0 -0
  559. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/hu.json +0 -0
  560. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/mn.json +0 -0
  561. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/pt_BR.json +0 -0
  562. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/ro.json +0 -0
  563. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/vi.json +0 -0
  564. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/dist/locales/zh_Hant.json +0 -0
  565. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/scripts/clean_translations.py +0 -0
  566. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/frontend/web/static/docs/invoke-favicon-docs.svg +0 -0
  567. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/invocation_api/__init__.py +0 -0
  568. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/invokeai/version/__init__.py +0 -0
  569. {InvokeAI-5.0.2 → InvokeAI-5.1.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: InvokeAI
3
- Version: 5.0.2
3
+ Version: 5.1.0
4
4
  Summary: An implementation of Stable Diffusion which provides various new features and options to aid the image generation process
5
5
  Author-email: The InvokeAI Project <lincoln.stein@gmail.com>
6
6
  License: Apache License
@@ -325,7 +325,7 @@ Invoke features an organized gallery system for easily storing, accessing, and r
325
325
  ### Other features
326
326
 
327
327
  - Support for both ckpt and diffusers models
328
- - SD1.5, SD2.0, and SDXL support
328
+ - SD1.5, SD2.0, SDXL, and FLUX support
329
329
  - Upscaling Tools
330
330
  - Embedding Manager & Support
331
331
  - Model Manager & Support
@@ -420,6 +420,9 @@ invokeai/backend/onnx/onnx_runtime.py
420
420
  invokeai/backend/quantization/__init__.py
421
421
  invokeai/backend/quantization/bnb_llm_int8.py
422
422
  invokeai/backend/quantization/bnb_nf4.py
423
+ invokeai/backend/quantization/gguf/ggml_tensor.py
424
+ invokeai/backend/quantization/gguf/loaders.py
425
+ invokeai/backend/quantization/gguf/utils.py
423
426
  invokeai/backend/quantization/scripts/load_flux_model_bnb_llm_int8.py
424
427
  invokeai/backend/quantization/scripts/load_flux_model_bnb_nf4.py
425
428
  invokeai/backend/quantization/scripts/quantize_t5_xxl_bnb_llm_int8.py
@@ -491,12 +494,12 @@ invokeai/frontend/install/__init__.py
491
494
  invokeai/frontend/install/import_images.py
492
495
  invokeai/frontend/web/__init__.py
493
496
  invokeai/frontend/web/dist/index.html
494
- invokeai/frontend/web/dist/assets/App-CsIbq0US.js
495
497
  invokeai/frontend/web/dist/assets/App-DEu4J2pT.css
498
+ invokeai/frontend/web/dist/assets/App-DIWPmKhe.js
496
499
  invokeai/frontend/web/dist/assets/ThemeLocaleProvider-B2NxUfIp.css
497
- invokeai/frontend/web/dist/assets/ThemeLocaleProvider-CGYUFFev.js
500
+ invokeai/frontend/web/dist/assets/ThemeLocaleProvider-CRJdOC9C.js
498
501
  invokeai/frontend/web/dist/assets/commercial-license-bg-C_dHp7on.png
499
- invokeai/frontend/web/dist/assets/index-DXIqgMot.js
502
+ invokeai/frontend/web/dist/assets/index-oRALkRAJ.js
500
503
  invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2
501
504
  invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2
502
505
  invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2
@@ -3,6 +3,7 @@ clip_anytorch==2.6.0
3
3
  compel==2.0.2
4
4
  controlnet-aux==0.0.7
5
5
  diffusers[torch]==0.27.2
6
+ gguf==0.10.0
6
7
  invisible-watermark==0.2.0
7
8
  mediapipe==0.10.7
8
9
  numpy==1.26.4
@@ -14,10 +15,10 @@ safetensors==0.4.3
14
15
  sentencepiece==0.2.0
15
16
  spandrel==0.3.4
16
17
  timm==0.6.13
17
- torch==2.2.2
18
+ torch==2.4.1
18
19
  torchmetrics==0.11.4
19
20
  torchsde==0.2.6
20
- torchvision==0.17.2
21
+ torchvision==0.19.1
21
22
  transformers==4.41.1
22
23
  fastapi-events==0.11.1
23
24
  fastapi==0.111.0
@@ -100,7 +101,7 @@ httpx
100
101
  [xformers]
101
102
 
102
103
  [xformers:sys_platform != "darwin"]
103
- xformers==0.0.25post1
104
+ xformers==0.0.28.post1
104
105
 
105
106
  [xformers:sys_platform == "linux"]
106
107
  triton
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: InvokeAI
3
- Version: 5.0.2
3
+ Version: 5.1.0
4
4
  Summary: An implementation of Stable Diffusion which provides various new features and options to aid the image generation process
5
5
  Author-email: The InvokeAI Project <lincoln.stein@gmail.com>
6
6
  License: Apache License
@@ -325,7 +325,7 @@ Invoke features an organized gallery system for easily storing, accessing, and r
325
325
  ### Other features
326
326
 
327
327
  - Support for both ckpt and diffusers models
328
- - SD1.5, SD2.0, and SDXL support
328
+ - SD1.5, SD2.0, SDXL, and FLUX support
329
329
  - Upscaling Tools
330
330
  - Embedding Manager & Support
331
331
  - Model Manager & Support
@@ -105,7 +105,7 @@ Invoke features an organized gallery system for easily storing, accessing, and r
105
105
  ### Other features
106
106
 
107
107
  - Support for both ckpt and diffusers models
108
- - SD1.5, SD2.0, and SDXL support
108
+ - SD1.5, SD2.0, SDXL, and FLUX support
109
109
  - Upscaling Tools
110
110
  - Embedding Manager & Support
111
111
  - Model Manager & Support
@@ -213,7 +213,11 @@ class FluxDenoiseInvocation(BaseInvocation, WithMetadata, WithBoard):
213
213
  cached_weights=cached_weights,
214
214
  )
215
215
  )
216
- elif config.format in [ModelFormat.BnbQuantizedLlmInt8b, ModelFormat.BnbQuantizednf4b]:
216
+ elif config.format in [
217
+ ModelFormat.BnbQuantizedLlmInt8b,
218
+ ModelFormat.BnbQuantizednf4b,
219
+ ModelFormat.GGUFQuantized,
220
+ ]:
217
221
  # The model is quantized, so apply the LoRA weights as sidecar layers. This results in slower inference,
218
222
  # than directly patching the weights, but is agnostic to the quantization format.
219
223
  exit_stack.enter_context(
@@ -114,6 +114,7 @@ class ModelFormat(str, Enum):
114
114
  T5Encoder = "t5_encoder"
115
115
  BnbQuantizedLlmInt8b = "bnb_quantized_int8b"
116
116
  BnbQuantizednf4b = "bnb_quantized_nf4b"
117
+ GGUFQuantized = "gguf_quantized"
117
118
 
118
119
 
119
120
  class SchedulerPredictionType(str, Enum):
@@ -197,7 +198,7 @@ class ModelConfigBase(BaseModel):
197
198
  class CheckpointConfigBase(ModelConfigBase):
198
199
  """Model config for checkpoint-style models."""
199
200
 
200
- format: Literal[ModelFormat.Checkpoint, ModelFormat.BnbQuantizednf4b] = Field(
201
+ format: Literal[ModelFormat.Checkpoint, ModelFormat.BnbQuantizednf4b, ModelFormat.GGUFQuantized] = Field(
201
202
  description="Format of the provided checkpoint model", default=ModelFormat.Checkpoint
202
203
  )
203
204
  config_path: str = Field(description="path to the checkpoint model config file")
@@ -363,6 +364,21 @@ class MainBnbQuantized4bCheckpointConfig(CheckpointConfigBase, MainConfigBase):
363
364
  return Tag(f"{ModelType.Main.value}.{ModelFormat.BnbQuantizednf4b.value}")
364
365
 
365
366
 
367
+ class MainGGUFCheckpointConfig(CheckpointConfigBase, MainConfigBase):
368
+ """Model config for main checkpoint models."""
369
+
370
+ prediction_type: SchedulerPredictionType = SchedulerPredictionType.Epsilon
371
+ upcast_attention: bool = False
372
+
373
+ def __init__(self, *args, **kwargs):
374
+ super().__init__(*args, **kwargs)
375
+ self.format = ModelFormat.GGUFQuantized
376
+
377
+ @staticmethod
378
+ def get_tag() -> Tag:
379
+ return Tag(f"{ModelType.Main.value}.{ModelFormat.GGUFQuantized.value}")
380
+
381
+
366
382
  class MainDiffusersConfig(DiffusersConfigBase, MainConfigBase):
367
383
  """Model config for main diffusers models."""
368
384
 
@@ -466,6 +482,7 @@ AnyModelConfig = Annotated[
466
482
  Annotated[MainDiffusersConfig, MainDiffusersConfig.get_tag()],
467
483
  Annotated[MainCheckpointConfig, MainCheckpointConfig.get_tag()],
468
484
  Annotated[MainBnbQuantized4bCheckpointConfig, MainBnbQuantized4bCheckpointConfig.get_tag()],
485
+ Annotated[MainGGUFCheckpointConfig, MainGGUFCheckpointConfig.get_tag()],
469
486
  Annotated[VAEDiffusersConfig, VAEDiffusersConfig.get_tag()],
470
487
  Annotated[VAECheckpointConfig, VAECheckpointConfig.get_tag()],
471
488
  Annotated[ControlNetDiffusersConfig, ControlNetDiffusersConfig.get_tag()],
@@ -26,6 +26,7 @@ from invokeai.backend.model_manager.config import (
26
26
  CLIPEmbedDiffusersConfig,
27
27
  MainBnbQuantized4bCheckpointConfig,
28
28
  MainCheckpointConfig,
29
+ MainGGUFCheckpointConfig,
29
30
  T5EncoderBnbQuantizedLlmInt8bConfig,
30
31
  T5EncoderConfig,
31
32
  VAECheckpointConfig,
@@ -35,6 +36,8 @@ from invokeai.backend.model_manager.load.model_loader_registry import ModelLoade
35
36
  from invokeai.backend.model_manager.util.model_util import (
36
37
  convert_bundle_to_flux_transformer_checkpoint,
37
38
  )
39
+ from invokeai.backend.quantization.gguf.loaders import gguf_sd_loader
40
+ from invokeai.backend.quantization.gguf.utils import TORCH_COMPATIBLE_QTYPES
38
41
  from invokeai.backend.util.silence_warnings import SilenceWarnings
39
42
 
40
43
  try:
@@ -204,6 +207,52 @@ class FluxCheckpointModel(ModelLoader):
204
207
  return model
205
208
 
206
209
 
210
+ @ModelLoaderRegistry.register(base=BaseModelType.Flux, type=ModelType.Main, format=ModelFormat.GGUFQuantized)
211
+ class FluxGGUFCheckpointModel(ModelLoader):
212
+ """Class to load GGUF main models."""
213
+
214
+ def _load_model(
215
+ self,
216
+ config: AnyModelConfig,
217
+ submodel_type: Optional[SubModelType] = None,
218
+ ) -> AnyModel:
219
+ if not isinstance(config, CheckpointConfigBase):
220
+ raise ValueError("Only CheckpointConfigBase models are currently supported here.")
221
+
222
+ match submodel_type:
223
+ case SubModelType.Transformer:
224
+ return self._load_from_singlefile(config)
225
+
226
+ raise ValueError(
227
+ f"Only Transformer submodels are currently supported. Received: {submodel_type.value if submodel_type else 'None'}"
228
+ )
229
+
230
+ def _load_from_singlefile(
231
+ self,
232
+ config: AnyModelConfig,
233
+ ) -> AnyModel:
234
+ assert isinstance(config, MainGGUFCheckpointConfig)
235
+ model_path = Path(config.path)
236
+
237
+ with SilenceWarnings():
238
+ model = Flux(params[config.config_path])
239
+
240
+ # HACK(ryand): We shouldn't be hard-coding the compute_dtype here.
241
+ sd = gguf_sd_loader(model_path, compute_dtype=torch.bfloat16)
242
+
243
+ # HACK(ryand): There are some broken GGUF models in circulation that have the wrong shape for img_in.weight.
244
+ # We override the shape here to fix the issue.
245
+ # Example model with this issue (Q4_K_M): https://civitai.com/models/705823/ggufk-flux-unchained-km-quants
246
+ img_in_weight = sd.get("img_in.weight", None)
247
+ if img_in_weight is not None and img_in_weight._ggml_quantization_type in TORCH_COMPATIBLE_QTYPES:
248
+ expected_img_in_weight_shape = model.img_in.weight.shape
249
+ img_in_weight.quantized_data = img_in_weight.quantized_data.view(expected_img_in_weight_shape)
250
+ img_in_weight.tensor_shape = expected_img_in_weight_shape
251
+
252
+ model.load_state_dict(sd, assign=True)
253
+ return model
254
+
255
+
207
256
  @ModelLoaderRegistry.register(base=BaseModelType.Flux, type=ModelType.Main, format=ModelFormat.BnbQuantizednf4b)
208
257
  class FluxBnbQuantizednf4bCheckpointModel(ModelLoader):
209
258
  """Class to load main models."""
@@ -30,6 +30,8 @@ from invokeai.backend.model_manager.config import (
30
30
  SchedulerPredictionType,
31
31
  )
32
32
  from invokeai.backend.model_manager.util.model_util import lora_token_vector_length, read_checkpoint_meta
33
+ from invokeai.backend.quantization.gguf.ggml_tensor import GGMLTensor
34
+ from invokeai.backend.quantization.gguf.loaders import gguf_sd_loader
33
35
  from invokeai.backend.spandrel_image_to_image_model import SpandrelImageToImageModel
34
36
  from invokeai.backend.util.silence_warnings import SilenceWarnings
35
37
 
@@ -187,6 +189,7 @@ class ModelProbe(object):
187
189
  if fields["type"] in [ModelType.Main, ModelType.ControlNet, ModelType.VAE] and fields["format"] in [
188
190
  ModelFormat.Checkpoint,
189
191
  ModelFormat.BnbQuantizednf4b,
192
+ ModelFormat.GGUFQuantized,
190
193
  ]:
191
194
  ckpt_config_path = cls._get_checkpoint_config_path(
192
195
  model_path,
@@ -220,7 +223,7 @@ class ModelProbe(object):
220
223
 
221
224
  @classmethod
222
225
  def get_model_type_from_checkpoint(cls, model_path: Path, checkpoint: Optional[CkptType] = None) -> ModelType:
223
- if model_path.suffix not in (".bin", ".pt", ".ckpt", ".safetensors", ".pth"):
226
+ if model_path.suffix not in (".bin", ".pt", ".ckpt", ".safetensors", ".pth", ".gguf"):
224
227
  raise InvalidModelConfigException(f"{model_path}: unrecognized suffix")
225
228
 
226
229
  if model_path.name == "learned_embeds.bin":
@@ -278,12 +281,10 @@ class ModelProbe(object):
278
281
  return ModelType.SpandrelImageToImage
279
282
  except spandrel.UnsupportedModelError:
280
283
  pass
281
- except RuntimeError as e:
282
- if "No such file or directory" in str(e):
283
- # This error is expected if the model_path does not exist (which is the case in some unit tests).
284
- pass
285
- else:
286
- raise e
284
+ except Exception as e:
285
+ logger.warning(
286
+ f"Encountered error while probing to determine if {model_path} is a Spandrel model. Ignoring. Error: {e}"
287
+ )
287
288
 
288
289
  raise InvalidModelConfigException(f"Unable to determine model type for {model_path}")
289
290
 
@@ -408,6 +409,8 @@ class ModelProbe(object):
408
409
  model = torch.load(model_path, map_location="cpu")
409
410
  assert isinstance(model, dict)
410
411
  return model
412
+ elif model_path.suffix.endswith(".gguf"):
413
+ return gguf_sd_loader(model_path, compute_dtype=torch.float32)
411
414
  else:
412
415
  return safetensors.torch.load_file(model_path)
413
416
 
@@ -477,6 +480,8 @@ class CheckpointProbeBase(ProbeBase):
477
480
  or "model.diffusion_model.double_blocks.0.img_attn.proj.weight.quant_state.bitsandbytes__nf4" in state_dict
478
481
  ):
479
482
  return ModelFormat.BnbQuantizednf4b
483
+ elif any(isinstance(v, GGMLTensor) for v in state_dict.values()):
484
+ return ModelFormat.GGUFQuantized
480
485
  return ModelFormat("checkpoint")
481
486
 
482
487
  def get_variant_type(self) -> ModelVariantType:
@@ -130,7 +130,7 @@ class ModelSearch:
130
130
  return
131
131
 
132
132
  for n in file_names:
133
- if n.endswith((".ckpt", ".bin", ".pth", ".safetensors", ".pt")):
133
+ if n.endswith((".ckpt", ".bin", ".pth", ".safetensors", ".pt", ".gguf")):
134
134
  try:
135
135
  self.model_found(absolute_path / n)
136
136
  except KeyboardInterrupt:
@@ -8,6 +8,8 @@ import safetensors
8
8
  import torch
9
9
  from picklescan.scanner import scan_file_path
10
10
 
11
+ from invokeai.backend.quantization.gguf.loaders import gguf_sd_loader
12
+
11
13
 
12
14
  def _fast_safetensors_reader(path: str) -> Dict[str, torch.Tensor]:
13
15
  checkpoint = {}
@@ -54,7 +56,11 @@ def read_checkpoint_meta(path: Union[str, Path], scan: bool = False) -> Dict[str
54
56
  scan_result = scan_file_path(path)
55
57
  if scan_result.infected_files != 0:
56
58
  raise Exception(f'The model file "{path}" is potentially infected by malware. Aborting import.')
57
- checkpoint = torch.load(path, map_location=torch.device("meta"))
59
+ if str(path).endswith(".gguf"):
60
+ # The GGUF reader used here uses numpy memmap, so these tensors are not loaded into memory during this function
61
+ checkpoint = gguf_sd_loader(Path(path), compute_dtype=torch.float32)
62
+ else:
63
+ checkpoint = torch.load(path, map_location=torch.device("meta"))
58
64
  return checkpoint
59
65
 
60
66
 
@@ -0,0 +1,152 @@
1
+ from typing import overload
2
+
3
+ import gguf
4
+ import torch
5
+
6
+ from invokeai.backend.quantization.gguf.utils import (
7
+ DEQUANTIZE_FUNCTIONS,
8
+ TORCH_COMPATIBLE_QTYPES,
9
+ dequantize,
10
+ )
11
+
12
+
13
+ def dequantize_and_run(func, args, kwargs):
14
+ """A helper function for running math ops on GGMLTensor inputs.
15
+
16
+ Dequantizes the inputs, and runs the function.
17
+ """
18
+ dequantized_args = [a.get_dequantized_tensor() if hasattr(a, "get_dequantized_tensor") else a for a in args]
19
+ dequantized_kwargs = {
20
+ k: v.get_dequantized_tensor() if hasattr(v, "get_dequantized_tensor") else v for k, v in kwargs.items()
21
+ }
22
+ return func(*dequantized_args, **dequantized_kwargs)
23
+
24
+
25
+ def apply_to_quantized_tensor(func, args, kwargs):
26
+ """A helper function to apply a function to a quantized GGML tensor, and re-wrap the result in a GGMLTensor.
27
+
28
+ Assumes that the first argument is a GGMLTensor.
29
+ """
30
+ # We expect the first argument to be a GGMLTensor, and all other arguments to be non-GGMLTensors.
31
+ ggml_tensor = args[0]
32
+ assert isinstance(ggml_tensor, GGMLTensor)
33
+ assert all(not isinstance(a, GGMLTensor) for a in args[1:])
34
+ assert all(not isinstance(v, GGMLTensor) for v in kwargs.values())
35
+
36
+ new_data = func(ggml_tensor.quantized_data, *args[1:], **kwargs)
37
+
38
+ if new_data.dtype != ggml_tensor.quantized_data.dtype:
39
+ # This is intended to catch calls such as `.to(dtype-torch.float32)`, which are not supported on GGMLTensors.
40
+ raise ValueError("Operation changed the dtype of GGMLTensor unexpectedly.")
41
+
42
+ return GGMLTensor(
43
+ new_data, ggml_tensor._ggml_quantization_type, ggml_tensor.tensor_shape, ggml_tensor.compute_dtype
44
+ )
45
+
46
+
47
+ GGML_TENSOR_OP_TABLE = {
48
+ # Ops to run on the quantized tensor.
49
+ torch.ops.aten.detach.default: apply_to_quantized_tensor, # pyright: ignore
50
+ torch.ops.aten._to_copy.default: apply_to_quantized_tensor, # pyright: ignore
51
+ # Ops to run on dequantized tensors.
52
+ torch.ops.aten.t.default: dequantize_and_run, # pyright: ignore
53
+ torch.ops.aten.addmm.default: dequantize_and_run, # pyright: ignore
54
+ torch.ops.aten.mul.Tensor: dequantize_and_run, # pyright: ignore
55
+ }
56
+
57
+
58
+ class GGMLTensor(torch.Tensor):
59
+ """A torch.Tensor sub-class holding a quantized GGML tensor.
60
+
61
+ The underlying tensor is quantized, but the GGMLTensor class provides a dequantized view of the tensor on-the-fly
62
+ when it is used in operations.
63
+ """
64
+
65
+ @staticmethod
66
+ def __new__(
67
+ cls,
68
+ data: torch.Tensor,
69
+ ggml_quantization_type: gguf.GGMLQuantizationType,
70
+ tensor_shape: torch.Size,
71
+ compute_dtype: torch.dtype,
72
+ ):
73
+ # Type hinting is not supported for torch.Tensor._make_wrapper_subclass, so we ignore the errors.
74
+ return torch.Tensor._make_wrapper_subclass( # pyright: ignore
75
+ cls,
76
+ data.shape,
77
+ dtype=data.dtype,
78
+ layout=data.layout,
79
+ device=data.device,
80
+ strides=data.stride(),
81
+ storage_offset=data.storage_offset(),
82
+ )
83
+
84
+ def __init__(
85
+ self,
86
+ data: torch.Tensor,
87
+ ggml_quantization_type: gguf.GGMLQuantizationType,
88
+ tensor_shape: torch.Size,
89
+ compute_dtype: torch.dtype,
90
+ ):
91
+ self.quantized_data = data
92
+ self._ggml_quantization_type = ggml_quantization_type
93
+ # The dequantized shape of the tensor.
94
+ self.tensor_shape = tensor_shape
95
+ self.compute_dtype = compute_dtype
96
+
97
+ def __repr__(self, *, tensor_contents=None):
98
+ return f"GGMLTensor(type={self._ggml_quantization_type.name}, dequantized_shape=({self.tensor_shape})"
99
+
100
+ @overload
101
+ def size(self, dim: None = None) -> torch.Size: ...
102
+
103
+ @overload
104
+ def size(self, dim: int) -> int: ...
105
+
106
+ def size(self, dim: int | None = None):
107
+ """Return the size of the tensor after dequantization. I.e. the shape that will be used in any math ops."""
108
+ if dim is not None:
109
+ return self.tensor_shape[dim]
110
+ return self.tensor_shape
111
+
112
+ @property
113
+ def shape(self) -> torch.Size: # pyright: ignore[reportIncompatibleVariableOverride] pyright doesn't understand this for some reason.
114
+ """The shape of the tensor after dequantization. I.e. the shape that will be used in any math ops."""
115
+ return self.size()
116
+
117
+ @property
118
+ def quantized_shape(self) -> torch.Size:
119
+ """The shape of the quantized tensor."""
120
+ return self.quantized_data.shape
121
+
122
+ def requires_grad_(self, mode: bool = True) -> torch.Tensor:
123
+ """The GGMLTensor class is currently only designed for inference (not training). Setting requires_grad to True
124
+ is not supported. This method is a no-op.
125
+ """
126
+ return self
127
+
128
+ def get_dequantized_tensor(self):
129
+ """Return the dequantized tensor.
130
+
131
+ Args:
132
+ dtype: The dtype of the dequantized tensor.
133
+ """
134
+ if self._ggml_quantization_type in TORCH_COMPATIBLE_QTYPES:
135
+ return self.quantized_data.to(self.compute_dtype)
136
+ elif self._ggml_quantization_type in DEQUANTIZE_FUNCTIONS:
137
+ # TODO(ryand): Look into how the dtype param is intended to be used.
138
+ return dequantize(
139
+ data=self.quantized_data, qtype=self._ggml_quantization_type, oshape=self.tensor_shape, dtype=None
140
+ ).to(self.compute_dtype)
141
+ else:
142
+ # There is no GPU implementation for this quantization type, so fallback to the numpy implementation.
143
+ new = gguf.quants.dequantize(self.quantized_data.cpu().numpy(), self._ggml_quantization_type)
144
+ return torch.from_numpy(new).to(self.quantized_data.device, dtype=self.compute_dtype)
145
+
146
+ @classmethod
147
+ def __torch_dispatch__(cls, func, types, args, kwargs):
148
+ # We will likely hit cases here in the future where a new op is encountered that is not yet supported.
149
+ # The new op simply needs to be added to the GGML_TENSOR_OP_TABLE.
150
+ if func in GGML_TENSOR_OP_TABLE:
151
+ return GGML_TENSOR_OP_TABLE[func](func, args, kwargs)
152
+ return NotImplemented
@@ -0,0 +1,22 @@
1
+ from pathlib import Path
2
+
3
+ import gguf
4
+ import torch
5
+
6
+ from invokeai.backend.quantization.gguf.ggml_tensor import GGMLTensor
7
+ from invokeai.backend.quantization.gguf.utils import TORCH_COMPATIBLE_QTYPES
8
+
9
+
10
+ def gguf_sd_loader(path: Path, compute_dtype: torch.dtype) -> dict[str, GGMLTensor]:
11
+ reader = gguf.GGUFReader(path)
12
+
13
+ sd: dict[str, GGMLTensor] = {}
14
+ for tensor in reader.tensors:
15
+ torch_tensor = torch.from_numpy(tensor.data)
16
+ shape = torch.Size(tuple(int(v) for v in reversed(tensor.shape)))
17
+ if tensor.tensor_type in TORCH_COMPATIBLE_QTYPES:
18
+ torch_tensor = torch_tensor.view(*shape)
19
+ sd[tensor.name] = GGMLTensor(
20
+ torch_tensor, ggml_quantization_type=tensor.tensor_type, tensor_shape=shape, compute_dtype=compute_dtype
21
+ )
22
+ return sd