TensorRT ๊ฐ์๊ณผ LoRA ๋์ ์ ์ฉ์ ์๋ฆฝ์ํจ ์ต์ ํ ์์ง ์ค๊ณ
Stop Choosing Between Speed and LoRAs: Meet ComfyUI-TensorRT-Reforge ๐
AI ์์ฝ
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 ๋ฐ์ ์, ๊ฐ์ค์น ๋งต ๋ถ๋ฆฌ ์ ๋ต์ ํตํด ๋์ ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ ์ ์ง