lsi9923

batch-image-gen-orchestrator

이미지를 수백 장 병렬 생성할 때 병렬 수·재시도·백오프·보고 주기를 정해 오케스트레이션 스크립트를 만들거나 지시문을 쓴다. "이미지 병렬로 뽑아줘", "대량 이미지 생성", "배치 이미지", "32장 병렬", "이미지 대량 생성 스크립트" 요청에 쓴다.

lsi9923 0 Updated 1d ago
GitHub

Install

npx skillscat add lsi9923/threads-skills-archive/batch-image-gen-orchestrator

Install via the SkillsCat registry.

SKILL.md

배치 이미지 생성 오케스트레이터

언제 쓰나

이미지를 수십~수백 장 뽑아야 할 때. 하나씩 순차로 돌리면 몇 시간이 걸린다.

지시문 골격 (그대로 복사해서 쓴다)

[도구]를 이용해서 병렬로 이미지를 생성해라.

- 동시 요청: 최대 [N]장 (기본 16, 상한 32)
- 방식: asyncio(또는 동등한 비동기 I/O)로 진짜 병렬. 순차 루프 금지.
- 재시도: 실패 시 지수 백오프(1s → 2s → 4s → 8s → 16s), 최대 5회
- 최종 실패: 5회 모두 실패하면 그 항목만 실패로 기록하고 계속 진행
- 중단 금지: 한 항목 실패로 전체를 멈추지 않는다
- 보고: [M]분마다 진행률(성공/실패/남음) 출력
- 저장: [경로]/[명명규칙]. 실패 목록은 [경로]/failed.json

구현 시 반드시 지킬 것

  1. 세마포어로 동시 수를 제한한다. 무제한 병렬은 API 레이트리밋에 걸려 전부 실패한다.
    sem = asyncio.Semaphore(16)
    async def one(item):
        async with sem:
            ...
  2. 실패는 항목 단위로 격리한다. try/except를 항목마다 두른다. gather에 예외가 터지면 전체가 죽는다.
  3. 부분 결과를 즉시 저장한다. 끝나고 한꺼번에 쓰면 중간에 죽었을 때 전부 날아간다.
  4. 재개 가능하게 만든다. 이미 있는 파일은 건너뛴다(멱등).
  5. 진행률을 flush 한다. print(..., flush=True). 버퍼에 있으면 멈춘 것처럼 보인다.

체크리스트

  • 동시 수 상한이 있는가
  • 항목별 예외 격리가 있는가
  • 이미 있는 파일을 건너뛰는가
  • 실패 목록을 따로 남기는가
  • 5회 재시도 후 실패로 확정하는가

출처: @bunniesossdev Threads 저장글 (god-tibo-imagen 병렬 생성)

Categories