ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
Stop Choosing Between Speed and LoRAs: Meet ComfyUI-TensorRT-Reforge ๐Ÿš€
Dev.toDev.to
AI/ML

TensorRT ๊ฐ€์†๊ณผ LoRA ๋™์  ์ ์šฉ์„ ์–‘๋ฆฝ์‹œํ‚จ ์ตœ์ ํ™” ์—”์ง„ ์„ค๊ณ„

Stop Choosing Between Speed and LoRAs: Meet ComfyUI-TensorRT-Reforge ๐Ÿš€

zaochuan58542026๋…„ 4์›” 12์ผ9๋ถ„advanced

Context

PyTorch ๊ธฐ๋ฐ˜์˜ ํ‘œ์ค€ ์ถ”๋ก  ๋ฐฉ์‹์€ ์œ ์—ฐํ•˜์ง€๋งŒ TensorRT ๋Œ€๋น„ ์—ฐ์‚ฐ ์†๋„๊ฐ€ ๋‚ฎ์Œ. ๊ธฐ์กด TensorRT ๊ตฌํ˜„์ฒด๋Š” ๋ชจ๋ธ ๊ณ ์ •(Static) ํŠน์„ฑ์œผ๋กœ ์ธํ•ด LoRA์™€ ๊ฐ™์€ ๋™์  ๊ฐ€์ค‘์น˜ ์ ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ์  ํ•œ๊ณ„ ์กด์žฌ.

Technical Solution

  • .safetensors ๋ชจ๋ธ์„ TensorRT Engine์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” Exporter-Loader ๊ตฌ์กฐ ์„ค๊ณ„
  • TensorRT์˜ Static Shape ์ œ์•ฝ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ Resolution Range ๋ฐ Batch Size ์‚ฌ์ „ ์ •์˜ ๋ฐฉ์‹ ์ฑ„ํƒ
  • LoRA ์ง€์›์„ ์œ„ํ•ด ์—”์ง„ ๋ฐ์ดํ„ฐ์™€ ๊ฐ€์ค‘์น˜ ๋งต์„ ๊ฒฐํ•ฉํ•œ ์ปค์Šคํ…€ .bundle ํŒŒ์ผ ํฌ๋งท ์ •์˜
  • ID ๊ธฐ๋ฐ˜ ์ฒญํฌ ๊ตฌ์กฐ(ID-Size-Data)๋ฅผ ํ†ตํ•œ TensorRT Engine, ONNX Model, WeightsMap์˜ ํšจ์œจ์  ์ง๋ ฌํ™”
  • ํŒŒ์ผ ๋๋‹จ(EOF)์—์„œ ์—ญ๋ฐฉํ–ฅ์œผ๋กœ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํฌ๊ธฐ๋ฅผ ์ฝ์–ด ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์‹ฑํ•˜๋Š” ์—ญ๋ฐฉํ–ฅ ํƒ์ƒ‰ ๋กœ์ง ๊ตฌํ˜„
  • ์—”์ง„ ์‹คํ–‰ ๋‹จ๊ณ„์—์„œ WeightsMap์„ ์ฐธ์กฐํ•˜์—ฌ LoRA ๊ฐ€์ค‘์น˜๋ฅผ ๋™์ ์œผ๋กœ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๋ž˜ํผ ๊ตฌ์กฐ ์„ค๊ณ„

- Static Engine ๋„์ž… ์‹œ ์ž…๋ ฅ ํ…์„œ์˜ Shape ์ œ์•ฝ ์‚ฌํ•ญ์„ ๋ช…ํ™•ํžˆ ์ •์˜ํ•˜๊ณ  ์ด๋ฅผ ํŒŒ์ผ ๋„ค์ด๋ฐ ๊ทœ์น™์— ํฌํ•จํ•˜์—ฌ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ ๋ฐฉ์ง€ - ์ด๊ธฐ์ข… ๋ฐ์ดํ„ฐ(๋ฐ”์ด๋„ˆ๋ฆฌ ์—”์ง„ ๋ฐ JSON ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ) ํ†ตํ•ฉ ์‹œ ID ๊ธฐ๋ฐ˜ ์ฒญํฌ ํฌ๋งท์„ ์„ค๊ณ„ํ•˜์—ฌ ํ™•์žฅ์„ฑ ํ™•๋ณด - ์ถ”๋ก  ์†๋„ ์ตœ์ ํ™”์™€ ์œ ์—ฐ์„ฑ ์‚ฌ์ด์˜ Trade-off ๋ฐœ์ƒ ์‹œ, ๊ฐ€์ค‘์น˜ ๋งต ๋ถ„๋ฆฌ ์ „๋žต์„ ํ†ตํ•ด ๋™์  ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ ์œ ์ง€

์›๋ฌธ ์ฝ๊ธฐ