강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

내일은 한걸음 더 나아갈거야님의 프로필 이미지
내일은 한걸음 더 나아갈거야

작성한 질문수

[VLM101] 파인튜닝으로 멀티모달 챗봇 만들기 (feat.MCP)

[실습] VLM SFT Hands On - Jupyter Notebook

좋은 강의 감사합니다. 궁금한게 있어 질의 드립니다.

작성

·

9

0

# 모델을 로드하는 코드
model_id = "/work/checkpoints/hf/Qwen2.5-VL-3B-Instruct"  # 사용할 모델 경로 지정
model_org = Qwen2_5_VLForConditionalGeneration.from_pretrained(
    model_id,  # 모델 경로로부터 모델 불러오기
    device_map="auto",  # 자동으로 장치 설정 (예: GPU 사용)
    torch_dtype=torch.bfloat16,  # 모델의 데이터 타입을 bfloat16으로 설정 (메모리 최적화)
)
processor = AutoProcessor.from_pretrained(model_id)  # 모델에 맞는 processor 불러오기

==> 질문 사항 (2개)
질문1) 위 코드에 동일한 모델을 model_org 와 processor 로 정의한 거 같은데 왜 이렇게 정의한 이유는 무엇인가요?

질문2) datacollator 는 모델마다 정의하는 방법이 다른 거 같은데 현재 샘플로 주신 모델은 어디를 참고해야 하나요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 내일은 한걸음 더 나아갈거야님.

주신 질문에 대한 답변을 드리겠습니다. 모델을 로드할 때 model_orgprocessor를 따로 정의하는 이유와 datacollator에 대한 설명을 각각 드리겠습니다.

질문1) 동일한 모델을 model_org와 processor로 정의한 이유

model_orgprocessor를 따로 정의하는 이유는 다음과 같습니다:

  • Model (model_org): 모델 자체는 주어진 입력에 대해 예측을 수행하는 역할을 합니다. 즉, 데이터가 입력으로 들어왔을 때 모델이 학습한 내용을 바탕으로 결과를 출력합니다. Qwen2.5-VL과 같은 모델은 이미지와 텍스트 데이터를 동시에 다룰 수 있는 특성을 가지고 있습니다.

  • Processor: 프로세서는 모델에 데이터를 올바르게 전달하기 위해 데이터 전처리를 관리하는 역할을 합니다. 텍스트와 이미지를 모델이 이해할 수 있는 형식으로 변환하고, 필요시에는 모델이 생성한 출력을 해석하는 데에도 사용됩니다.

따라서, 모델과 프로세서가 따로 정의되어 동작하지만, 서로 상호 보완적인 역할을 수행한다고 볼 수 있습니다.

질문2) datacollator 정의 방법

datacollator는 데이터 배치를 보다 효과적으로 만들기 위한 방법입니다. 주어진 모델에서 사용할 datacollator를 정의하는 방법은 사용하는 라이브러리와 모델에 따라 다를 수 있습니다. 일반적으로 Hugging Face의 Transformers 라이브러리를 사용할 경우, 다음과 같이 사용할 수 있습니다:

  • 당신이 사용하는 모델의 공식 문서나 예제 코드를 참고하여 DataCollator를 어떻게 설정해야 하는지 확인하세요.
  • DataCollator는 기본적으로 배치 내의 각 데이터를 모델이 사용할 수 있는 형태로 맞춰주며, 랜덤 마스크 생성이나 다른 데이터 변형 작업을 수행할 수도 있습니다.

샘플 모델을 위한 datacollator를 정의하려면 공식 Hugging Face 문서를 참고하시고, 모델에 따라 제공되는 예제 코드를 활용하여 최적의 설정을 찾아보세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

내일은 한걸음 더 나아갈거야님의 프로필 이미지
내일은 한걸음 더 나아갈거야

작성한 질문수

질문하기