LoRA를 붙였는데 완성된 인물 사진이 베이스 모델 결과와 똑같아 보일 수 있습니다. 작업이 성공했다는 사실만으로는 어댑터가 이미지에 영향을 주었는지 알 수 없습니다. 확인하려면 같은 프롬프트와 같은 시드로 세 번 실행합니다. LoRA 없이 두 번, LoRA와 함께 한 번입니다. 세 장의 출력은 이미지당 $0.012일 때 총 $0.036입니다. 세 장을 비교해 의도한 스타일이나 인물 변화가 베이스 모델의 평소 편차를 넘어 나타나는지 확인합니다.
이 두 번째 질문은 성인 대상 작업에서 가장 중요합니다. 베이스 모델은 이미 성숙한 내용의 요청도 필터 없이 렌더링하므로, 어댑터를 붙인 결과가 더 노골적으로 보여도 원인은 베이스 모델일 수 있습니다. 무엇이 원인인지는 대조군만 알려 줍니다.
먼저 Playground에서 해 보기
z-image-turbo-lora Playground를 Form view로 열고 세 번 모두 같은 값을 설정합니다.
- Prompt에 단순한 인물 사진 프롬프트를 붙여 넣고, Aspect ratio를 1:1, Output format을 PNG, Seed를 42로 설정합니다. JPEG 압축은 픽셀 비교에 노이즈를 더합니다.
- Style LoRAs에서 Remove item으로 목록을 비운 뒤 두 번 실행합니다. 이것이 두 개의 대조군입니다.
- Add item을 선택하고 LoRA file에
.safetensors직접 링크를 붙여 넣은 뒤, Strength는 1로 두고 한 번 실행합니다. (Playground는 LoRA의 스케일을 "Strength"라고 부르지만 API 필드는scale이며, 아래에서 설명하는 이미지→이미지의strength와는 다릅니다.) - 세 출력을 나란히 놓습니다. 의도한 스타일이나 인물 변화가 두 대조군 사이의 차이를 넘어 나타납니까?
Realism 어댑터는 이미 사진 같은 인물 사진에는 미묘한 변화만 줄 수 있습니다. 첫 확인에서 변화를 더 잘 보고 싶다면 Turbo와 호환되는 회화풍 또는 색보정 LoRA와 제작자의 트리거 단어를 고르세요. Realism의 차이가 작다고 해서 로딩이 실패했다는 뜻은 아닙니다.
API로 세 작업 검증 실행하기
차이를 눈대중이 아니라 수치로 재려면 같은 세 작업을 Python에서 실행합니다. spicyapi와 pillow를 설치하고 SPICY_API_KEY를 설정한 뒤 다음을 실행합니다.
import os
import uuid
import urllib.request
from io import BytesIO
from PIL import Image, ImageChops, ImageStat
from spicyapi import SpicyClient, output_assets
client = SpicyClient()
MODEL = "alibaba/z-image-turbo-lora/text-to-image"
inputs = {"prompt": "Realism, studio portrait of a woman in a burgundy blazer, soft window light, grey backdrop",
"aspect_ratio": "1:1", "output_format": "png", "seed": 42,
"loras": [{"path": "https://huggingface.co/suayptalha/Z-Image-Turbo-Realism-LoRA/resolve/8dc179cb56844d4ddc6e4527c30e98347eeae971/pytorch_lora_weights.safetensors", "scale": 1}]}
images = []
for name, loras in [("base-1", []), ("base-2", []), ("lora", inputs["loras"])]:
body = {**inputs, "loras": loras}
quote = client.quote_task(model=MODEL, input_data=body)
if input(f"{name}: maximum ${quote['maxCharge']}. Create? [y/N] ") != "y":
raise SystemExit("Stopped")
task = client.create_task(model=MODEL, input_data=body, idempotency_key=str(uuid.uuid4()),
quote_id=quote["quoteId"], expected_cost=quote["estimatedCost"])
final = client.wait_for_terminal(task["taskId"])
url = output_assets(final)[0]["url"]
request = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
data = urllib.request.urlopen(request, timeout=120).read()
open(name + ".png", "wb").write(data)
images.append(Image.open(BytesIO(data)).convert("RGB"))
for label, other in [("control gap", images[1]), ("LoRA gap", images[2])]:
diff = ImageStat.Stat(ImageChops.difference(images[0], other)).mean
print(label, sum(diff) / 3 / 255 * 100)작업 처리는 Python SDK에서 다룹니다. 버전이 고정된 직접 LoRA 파일과 제작자의 트리거 단어를 사용하세요. 대조군 사이에 파일을 바꾸면 비교가 무의미해집니다. 같은 시드라도 픽셀이 달라질 수 있으므로, 어댑터 점수를 해석하기 전에 두 대조군부터 비교하세요.
결과 읽는 법
| 대조군 대 LoRA를 대조군 대 대조군과 비교 | 의미 | 할 일 |
|---|---|---|
| 노이즈 수준과 비슷하고 이미지도 비슷해 보임 | 이 프롬프트에서는 어댑터의 효과가 보이지 않음 | 학습된 베이스, 트리거 단어, 파일 형식(아래)을 확인한 뒤 파일 제작자가 권장하는 스케일을 사용합니다. 권장값이 없으면 0.5, 1, 1.5를 비교합니다 |
| 대조군 간 차이를 분명히 넘어서고(차이가 0인 대조군 포함) 목표한 느낌이 보이며 피사체가 유지됨 | 의도한 어댑터 효과의 근거. 더 많은 시드로 확인 필요 | 유지합니다. 다른 시드 두세 개로 반복합니다 |
| 노이즈 수준을 크게 넘지만 피사체, 얼굴, 구도가 바뀜 | 변화는 크지만 아직 쓸 만한 결과는 아님 | 0.8이나 0.6 같은 낮은 스케일을 같은 대조군과 비교합니다 |
| 대조군이 이미 요청 내용과 일치함 | 어댑터가 필요한 것을 더해 주지 않음 | 사용하지 않습니다. LoRA는 스타일이나 인물 조절 수단이지 필수 요건이 아닙니다 |
수치는 1차 선별용이고 판단은 눈으로 합니다. 카메라가 조금만 움직여도 많은 픽셀이 바뀌지만 얼굴이 바뀌어도 변하는 픽셀은 적습니다. 따라서 퍼센트를 믿기 전에 인물, 스타일, 구도, 요청하지 않은 의상이나 소품을 확인하세요. 퍼센트는 다른 파일이나 크기에 적용되는 기준값이 아닙니다. 성인용 장면에서는 거부와, 완료되었지만 수위가 낮아진 이미지도 구분하세요. 후자는 과금되며 결과가 깔끔해 보여도 요청을 충족하지 못할 수 있습니다.
LoRA가 아무 효과도 없는 이유
작업은 완료되었는데 의도한 효과가 보이지 않는다면 다음을 순서대로 확인하세요.
- 문서화되지 않은 호환성. Turbo 전용 파일이나, Base로 학습했지만 제작자가 Turbo와의 호환성을 문서화한 파일을 우선 사용하세요. Base로 학습한 어댑터가 자동으로 대체재가 되는 것은 아닙니다. 스케일을 키우면 비호환이 해결된다고 가정하지 말고, 제작자의 Turbo 설정을 따르고 LoRA 없는 대조군을 실행하세요.
- 잘못된 어댑터 유형. 표준 LoRA가 안전한 형식입니다. ComfyUI의 한 보고서는 Z-Image Turbo용 LoKR 어댑터가 "lora key not loaded"로 기록되며 무시된 반면 표준 LoRA는 동작했다고 설명합니다(ComfyUI issue 10973). 이는 로컬 ComfyUI 로더에 대한 보고입니다. 엔드포인트가 LoKR 파일을 지원한다고 가정하지 말고 여기서는 표준 Turbo LoRA를 사용하세요.
- 트리거 단어 누락. 스타일 및 캐릭터 파일은 트리거 단어에 반응합니다. 프롬프트를 그 단어로 시작하세요.
- 스케일이 너무 낮거나 효과가 미묘한 파일. 나머지는 모두 고정하고 0.5, 1, 1.5를 비교하세요.
- 링크 문제. 페이지 URL이나 비공개 파일은 제출 시 또는 그 이후에 실패합니다. 직접 접근할 수 있는 모델 파일을 사용하세요.
이미지→이미지에는 조절 항목이 두 개 있습니다
이미지→이미지 작업에서는 image_url, resolution, 그리고 별도의 strength(0~1, 기본값 0.8)가 추가됩니다. 이 값은 결과가 원본에서 얼마나 벗어나도 되는지를 정합니다. 값이 낮을수록 원본의 영향이 더 남고, 1에 가까울수록 더 큰 변화를 허용합니다. 얼굴을 보존해 주는 만능 설정은 없으며 1을 넘는 값은 거부됩니다. 시드와 함께 strength를 고정한 채 scale을 테스트하세요. 그렇지 않으면 어느 조절 항목이 이미지를 바꿨는지 알 수 없습니다.
성인용 작업에는 어떤 경로를 쓸까
LoRA 없이 진행한 2026년 9월 테스트에서 텍스트→이미지는 암시적인 장면부터 노골적인 장면까지 18개 요청을 모두 처리했습니다. 이미지→이미지는 18개 중 15개를 처리했습니다. 친밀한 행위를 다룬 편집 3건은 요청한 행위가 빠졌지만, 더 극단적인 테스트는 완료되었습니다. 결과는 단계 이름이 아니라 작업과 장면에 따라 달라집니다. 따라서 장면을 처음부터 쓸 수 있다면 텍스트→이미지로 시작하고, 기존 인물 사진이나 구도를 유지해야 한다면 이미지→이미지를 쓰세요. LoRA는 어느 쪽 위에도 룩이나 캐릭터를 더합니다. 등급별 결과는 모델 리뷰에 있습니다.

에메랄드색 드레스 인물 사진과 거울에 비친 세 가지 색의 반사입니다. 어댑터의 기여를 판단할 때는 대응하는 LoRA 없는 대조군과 비교하세요.
한 줄 기록 남기기
각 이미지 옆에 프롬프트, 시드, 화면 비율, {path, scale} 목록, 사용했다면 strength, 출력 URL을 저장하세요. 모든 path는 바뀔 수 없는 파일 버전에 고정하세요. 커뮤니티 URL은 제작자가 가중치를 교체해도 계속 열릴 수 있으며, 고정된 커밋은 각 실행에 사용한 어댑터 버전을 식별해 줍니다.

검토 단계를 그린 편집용 일러스트입니다. 같은 사람을 세 가지 방식으로 처리하면 스타일 변화를 판단하기 쉽습니다.
FAQ
같은 시드면 픽셀 단위로 똑같은 이미지가 나오나요?
항상 그렇지는 않습니다. LoRA로 인한 차이를 믿기 전에 LoRA 없는 작업을 반복해서 첫 결과와 비교해 보세요.
LoRA 세 개를 한 번에 테스트할 수 있나요?
요청당 최대 세 개까지 불러올 수 있지만, 먼저 하나만 테스트하세요. 여러 파일을 쓰면 어느 것이 변화를 일으켰는지 알 수 없습니다. 두 번째 LoRA는 스케일 약 0.5로 추가하고, 그 룩이 나타날 때까지 올리세요.
LoRA를 붙이면 더 강한 콘텐츠가 가능해지나요?
그것만으로는 아닙니다. 대조군과 비교해 나타나는 것만 어댑터의 효과로 보세요.
Z-Image Turbo는 LoRA를 지원하나요?
네. 요청마다 최대 세 개의 LoRA를 지정할 수 있으며, 각각 Z-Image Turbo와 호환된다고 문서화된 .safetensors 파일의 직접 링크입니다. scale은 0~4(기본값 1)입니다. 엔드포인트는 가중치를 불러올 뿐 학습하지는 않습니다. 가중치는 따로 학습하세요. 완성된 파일을 전달하는 방법은 호스팅 LoRA API 가이드에서 설명합니다.
비용은 얼마인가요?
LoRA를 불러오는 데 어댑터 비용이 따로 추가되지 않습니다. 각 작업 전에 실시간 견적으로 총액을 확인합니다.
스케일은 얼마로 해야 하나요?
제작자가 권장하는 범위를 사용하세요. 권장값이 없다면 플랫폼 기본값은 1입니다. 같은 프롬프트와 시드로 0.5, 1, 1.5를 비교하세요. 피사체가 틀어지면 스케일을 낮추세요. 다른 베이스로 학습한 파일에는 스케일을 높이는 것이 만능 해결책이 아닙니다.
이미 Z-Image Turbo용 파일이 있다면 배치가 그 파일에 의존하기 전에 텍스트→이미지에서 세 작업 검증을 실행하세요.
호출은 Agent에게 맡기기
입력 준비와 결과 수령은 Agent에게 맡기고, 가격과 창작상의 선택만 직접 승인하고 싶을 때 사용합니다.
- CLI: 같은 입력 객체를
input.json으로 저장한 뒤npx @spicyapi/cli tasks create --model alibaba/z-image-turbo-lora/text-to-image --input-file input.json --wait를 사용합니다. CLI가 가격을 확인해 줍니다. 복구를 위해 반환된 작업 ID를 보관하세요. - MCP: 어시스턴트에게
spicyapi_task_create로alibaba/z-image-turbo-lora/text-to-image작업을 만들고 이어서spicyapi_task_wait를 쓰도록 요청하세요. MCP 서버는 생성 전에 가격 확인을 요청합니다. - Skill:
npx skills add spicyapi-ai/spicy-skill로 설치한 뒤 "Use the spicyapi skill to run this three-job check and stop for my approval."라고 요청하세요. Skill은 설정된 CLI 또는 MCP 연결을 사용합니다.





