API를 통해 Civitai 또는 Hugging Face LoRA 실행하기 (GPU 불필요, 업로드 불필요)
요약
본 글은 Civitai나 Hugging Face의 LoRA를 로컬 환경이나 복잡한 설치 과정 없이 API 요청만으로 실행하는 방법을 안내합니다. SpicyAPI와 같은 호스팅 플랫폼을 사용하면, LoRA 다운로드 링크를 API에 전달하여 원격 서버가 작업을 처리하게 할 수 있습니다. 이를 통해 사용자들은 별도의 GPU나 복잡한 설비 없이도 원하는 이미지를 생성할 수 있으며, 기본 모델과 LoRA의 조합 규칙 및 효율적인 API 호출 방법(폴링, Idempotency-Key 등)을 배울 수 있습니다.
핵심 포인트
- LoRA 실행 시 로컬 설치/GPU가 필요 없습니다. API 요청만으로 원격 서버에서 처리 가능합니다.
- SpicyAPI와 같은 호스팅 플랫폼은 LoRA URL을 받아 작업을 수행하는 엔드포인트를 제공합니다.
- LoRA는 반드시 자신이 학습된 기본 모델과 함께 사용해야 합니다.
- 작업 완료를 기다릴 때는 폴링(polling) 방식을 사용하며, Idempotency-Key로 중복 요청 비용을 막을 수 있습니다.
Civitai나 Hugging Face에서 마음에 드는 LoRA를 찾았습니다. 일반적으로 이를 실행하려면 GPU를 임대하거나 ComfyUI 또는 diffusers 스크립트를 설치하고 기본 체크포인트를 다운로드하여 모든 것을 유지해야 합니다. 만약 여러분이 원하는 것이 단지 해당 LoRA를 사용한 이미지나 짧은 클립이라면, 이는 너무 많은 장치(machinery)입니다.
본 게시물에서는 다른 방법을 보여줍니다. 즉, LoRA의 다운로드 링크를 API 요청에 전달하고 호스팅된 모델이 그 작업을 위해 이를 로드하도록 하는 것입니다. 예시는 SpicyAPI를 사용하며, 이 플랫폼은 60개 이상의 이미지 및 비디오 엔드포인트(FLUX, Z-Image, Qwen-Image, Wan 2.2, LTX-2, MiniMax H3 등)에 loras 필드를 노출합니다. 이 플랫폼 자체적으로 콘텐츠 필터를 추가하지 않기 때문에, LoRA와 기본 모델이 생성할 수 있는 것이 바로 결과물로 나옵니다. 동일한 아이디어는 LoRA URL을 받는 모든 호스팅 환경에 적용됩니다.
1. 호출할 기본 모델(base)에 맞춰 학습된 LoRA 선택하기
LoRA는 자신이 학습된 기본 모델에서만 작동합니다. FLUX.1 [dev] LoRA가 Z-Image Turbo에서는 아무 쓸모가 없으며, 대부분의 호스팅 환경은 이를 알려주지 않습니다: 작업이 성공했고 LoRA는 조용히 무시됩니다. 그러므로 다음 기본 사항부터 시작해야 합니다:
- Civitai에서는 각 파일 버전이 상세 패널에
테스트 결과, 이 링크들은 토큰 없이도 로드되었으며, Civitai에서 로그인 전용으로 표시하는 파일들도 포함됩니다. 만약 401 에러가 발생하면 ?token=YOUR_CIVITAI_KEY를 추가하세요.
사용자 본인의 파일 — S3 또는 R2 버킷에 있는 파일을 예로 들어, .safetensors 파일의 모든 공개 HTTPS 링크가 작동합니다.
미리 업로드하는 것은 없습니다. 가중치(weights)는 작업(task)을 위해 가져와지며, 별도의 LoRA 비용은 발생하지 않습니다.
3. 요청 전송하기
모든 모델은 고유의 입력 스키마를 가지고 있지만, LoRA 부분은 동일합니다: { path, scale } 객체로 구성된 loras 배열입니다. 여기 Z-Image Turbo LoRA가 있으며, 이 LoRA는 0부터 4까지의 스케일(1이 중립)을 가진 최대 세 개의 LoRA를 사용합니다:
curl -X POST "https://api.spicyapi.ai/api/v1/jobs/createTask?wait=60" \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
...
시간을 절약해 주는 몇 가지 세부 사항:
?wait=60은 최대 60초 동안 연결을 유지합니다. 작업이 제시간에 완료되면 즉시 최종 기록(HTTP 200)을 받게 되며, 그렇지 않으면 일반적인taskId와 폴링(poll) 방식의 202 응답을 받습니다.Idempotency-Key는 동일한 요청을 재시도할 때 두 번째 작업을 생성하고 비용을 청구하는 대신 같은 작업을 반환하게 합니다.- 튜닝(tuning)을 할 때는
seed를 고정하세요. 이는 변경 사항이 LoRA 때문인지 아니면 운 덕분인지를 알려줄 수 있는 유일한 방법입니다.
202 응답을 받았다면, state가 terminal 상태가 될 때까지 폴링하세요:
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
{
"code": 200,
"msg": "success",
...
에셋 URL은 약 20분 동안 유효한 서명된 링크(signed link)입니다. 새 링크가 필요하면 다시 폴링하거나 파일을 다운로드하세요. 결과는 14일 동안 보관됩니다.
가격이 궁금한가요? 동일한 본문(body)을 POST /api/v1/jobs/quote로 보내보세요. 이 엔드포인트는 예상 비용과 최대 청구 가능 금액을 반환하며, 아무것도 생성하지 않습니다. 이미지 LoRA 엔드포인트는 대부분 이미지당 고정 가격입니다 (Z-Image Turbo LoRA의 경우 $0.012). 비디오 엔드포인트는 출력 초당 과금되므로, 먼저 견적(quoting)을 받아보는 것이 유용합니다.
4. LoRA가 실제로 작동하는지 확인하기
LoRA가 잘못 매칭되었거나 손상된 경우 조용히 실패(fails silently)하는 경우가 많으므로, 규모를 키우기 전에 A/B 테스트를 한 번 수행하세요:
- LoRA를 사용하여 요청을 한 번 실행합니다.
- 동일한 시드와
"loras": []를 사용하여 다시 실행합니다.
두 이미지가 비슷하게 보인다면 무언가 잘못된 것입니다: 베이스 모델이 틀렸거나, 트리거 단어가 누락되었거나, 혹은 중요하지 않을 정도로 스케일이 너무 낮을 수 있습니다. 배치(batch) 생성을 하기 전에 이를 수정하세요.
5. 강도 조절 및 스태킹(Stacking)
- 카드에서 권장하는 스케일로 시작합니다. 보통 0.7에서 1.0 사이입니다. 1.0보다 훨씬 높은 값은 아티팩트(artefacts)를 태우는 경향이 있습니다.
- 신중하게 스태킹하세요. 두 개의 스타일 LoRA를 최대 강도로 사용하면 일반적으로 서로 충돌합니다. 메인 LoRA는 1.0 근처로 유지하고, 두 번째 LoRA는 약 0.5 근처에서 시작하여 시드를 고정한 상태로 한 번에 약 0.2씩 스케일을 조정하며 추가하세요.
- 프롬프트에서 트리거 단어를 먼저 배치한 다음, 주제(subject), 배경(setting), 빛 순서로 작성합니다. "얼굴의 따뜻한 램프, 뒤쪽 네온"과 같은 구체적인 조명 설명은 "영화 같은(cinematic)" 같은 형용사보다 리얼리즘 LoRA에 더 큰 영향을 미칩니다.
- 비디오 모델은 여러 개의 슬롯을 가질 수 있습니다. Wan 2.2는 2단계 샘플러(two-stage sampler)를 사용하므로, 그 LoRA는 별도의 HIGH-noise 파일과 LOW-noise 파일을 갖습니다. 해당 엔드포인트는 이를
high_noise_loras와low_noise_loras, 그리고 일반적인loras필드로 받습니다. 각 파일을 훈련된 슬롯에 넣으세요.
제한 사항은 모델마다 다릅니다(LoRA 개수, 스케일 범위). 따라서 어떤 것도 하드코딩하기 전에 카탈로그에서 해당 모델의 inputSchema 내 loras 부분을 읽어보세요.
이 방식이 적합한 경우
호스팅된 LoRA 호출(Hosted LoRA calls)은 GPU를 실행할 필요 없이 자체 앱 내부에서 결과를 얻고 싶을 때, 자주 LoRA를 전환해야 할 때, 또는 하나의 LoRA에 전념하기 전에 많은 커뮤니티 LoRA를 테스트하고 있을 때 적합합니다. 만약 단일 고정된 LoRA로 24시간 내내 생성을 한다면, 자체 GPU가 더 저렴할 수 있습니다. 이미지당 몇 센트 수준에서는 대부분의 사이드 프로젝트나 프로토타입은 그 단계에 도달하지 못합니다.
전체 필드 참조(field reference), SDK(TypeScript, Python, Go, PHP, Java) 및 CLI는 docs에서 확인할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기