Drawing with LLMs [1] - 들어가며

Min-Kyeong·2025년 4월 9일
0

Drawing with LLMs

목록 보기
1/2
post-thumbnail

들어가며

이번에 친구와 함께 kaggle 대회에 참여하기로 했다. 해당 글을 기점으로 하여 대회에 참여하면서 겪어오는 과정들을 기록할 계획이다.

이번에 참여할 대회는 아래와 같다.

Drawing with LLMs

이미지에 대한 텍스트 설명이 주어지면,가능한 한 정확하게 렌더링하는 SVG 코드를 생성하는 것이다.

SVG는 Scable Vector Graphics 의 약자로 2차원 벡터 그래픽을 서술하는 XML 기반의 마크업 언어이다. 이는 품질 손실 없이 크기를 조정할 수 있다.

사람들이 작업한 코드들을 가볍게 살펴보니 아래와 같은 과정을 거치며 생성한다.

  1. Image describtion (Text 입력)
  2. Image Generation (이미지 생성)
  3. SVG Code generation (SVG 코드 생성)

Public Score와 Most Votes를 기준으로 상위권에 있는 노트북 몇 개를 선정하여 흐름을 분석해보도록 한다.

코드 제출해보기

우선 대체로 다음과 같은 흐름을 따랐다.

  1. Stable diffusion을 활용하여 프롬프트에 따라 이미지 생성
  2. 생성된 이미지를 SVG 로 변환
  3. 평가지표로 이미지 점수 측정

https://www.kaggle.com/code/jiazhuang/new-metric-simple-sd-svg-cv-0-485

위 노트북을 한번 돌려보고 제출해보는 거 까지 할려고 했다. 그저 가져오면 되는 것이라 금방 끝날 것이라 생각했지만 오류를 계속 맞이해서 저장을 5번 넘게 새로 하고 제출했다.

  1. 인터넷이 없는 환경에서 채점 된다고 한다.

Settings에서 "Turn off internet"을 해줘야 한다.

  1. kaggle package

kaggle에서는 이제 python package를 작성하고, 다른 곳에서 가져와 재사용할 수 있는 새로운 기능을 제공한다고 한다. 해당 기능은 오픈소스 라이브러리인 nbdev 를 활용하는 Jupyter Notebook에서 직접 Python 패키지를 정할 수 있게 한다.

#| default_exp core 셀을 반드시 포함해야 하며, 이 코드는 core.py 파일로 패키지가 생성되도록 설정한다.
#| export 태그가 붙은 셀만 패키지로 내보내지며, 그 외 코드는 무시됩니다.
패키지는 독립적으로 실행 가능해야 하며, 대회의 형식에 맞게 구성되어야 합니다

  1. Model class 설계
  • Model이라는 클래스를 만들어야 하며, predict(inputs) 메서드를 구현해야 한다.
  • 다른 대회와 달리 예측 결과를 저장하는 코드를 작성할 필요가 없다.
  1. train데이터 포함 X
import kagglehub
import polars as pl

train_path = kagglehub.competition_download('drawing-with-llms', 'train.csv')
train = pl.read_csv(train_path)

train.head()

위 코드는 학습 데이터를 불러오는 코드이다.

Kaggle에서 제출용으로 export되는 패키지(Python Package)는 “추론만(inference only)” 가능해야 하며,
외부 데이터셋에 의존해서는 안 된다고 한다. (#| export 태그를 제외하는 것을 잊지 말자)

  1. 의존성 Package는 Install Dependencies 활용

Install Dependencies > 필요한 패키지 설치 코드 입력 > RUN > RESTART & clear cell outputs (다시 실행)


pip install cairosvg  
pip install git+https://github.com/openai/CLIP.git
pip install -U bitsandbytes

베이스라인 코드 분석


원래 추론이 9시간 이내에 되어야하는데, 7시간이 지났음에도 불구하고 아직 결과가 나오지 않는다. 물론 베이스라인에서 변경없이 그대로 제출을 한 것이라서 어느정도 예상이 되지만 원래 이렇게 오래 걸리나 싶어 discussion을 찾아보니 14시간이 걸린 사람이 있다고 한다.

Submissions taking long time to run (but no time out)
After the new metric update, submissions are taking long time to run, more than 14 hours (but no time out).

Is this normal?

하지만 타임아웃은 발생하지 않았다고 하지만, 모델 경량화에 조금 더신경을 써야겠다.

0개의 댓글