데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      Multimodal LLM을 직접 학습시켜 보자!

      제롬 24.11.28
      7,016 9 3
      DEVOTEE 요약
      최근 AI 기술의 발전과 함께 대규모 언어 모델(LLM)이 인간과의 자연스러운 상호작용과 지식 확장 능력으로 주목받고 있으며, 멀티모달 모델로 확장되어 더욱 혁신적인 발전을 이루고 있습니다. 특히 Table-VQA-ko 데이터를 활용하여 한국어로 표 이미지를 이해하는 멀티모달 LLM(Chat Bot)을 학습하는 과정을 통해 간단한 서비스 시나리오에 맞는 모델을 구축할 수 있음을 확인하였습니다. 이 과정에서 상용 모델 대신 자체 모델을 개발하려는 관심이 증가하고 있으며, 작은 규모의 모델과 데이터로도 충분한 성능을 발휘할 가능성을 보여주었습니다.
      DEVOTEE 추천 블로그

      최근 몇 년간 AI 기술의 발전은 대규모 언어 모델(LLM, Large Language Model)의 등장으로 새로운 국면을 맞이했습니다.

      특히 ChatGPT와 같은 LLM은 인간과의 자연스러운 상호작용, 창의적인 콘텐츠 생성, 그리고 지식 확장 능력으로 전 세계적으로 큰 주목을 받으며 AI 기술의 중심에 자리 잡고 있습니다.

      이러한 LLM의 인기는 텍스트 기반 작업에서 시작하여 이제는 멀티모달(Multimodal) 모델로의 확장이라는 또 다른 혁신을 이루며 발전하고 있습니다.


      GPT-4V로 시작하여 Gemini, Claude-3 등의 상용화 모델이 우후죽순 출시 됨에 따라 이미지를 활용한 상용화 UseCase들이 떠오르고 있는데요.

      상용화 서비스를 fine-tuning하여 서비스를 출시 할 수도 있겠지만 서비스가 커지면 비용문제로 자체 모델 개발에 관심을 갖게 될 것입니다.


      그래서 이번 포스팅은 Multimodal LLM(이하 MLLM)을 직접 학습하는 과정을 간단한 시나리오로 소개해 보겠습니다.


      기획

      간단히 소개시켜드릴 목적으로 과정을 간소화하기 위해 다음 조건의 시나리오를 구성해 보겠습니다.

      • 공개 되어있는 multimodal 한국어 데이터

      • 공개 되어있는 모델과 학습 파이프라인

      먼저 공개되어있는 데이터를 찾고 데이터에 맞는 시나리오를 구성해 봅시다.

      한국어의 multimodal supervised fine-tuning(SFT) 목적의 데이터를 찾아보니 “Table-VQA-ko”라는 데이터를 찾을 수 있었습니다.


      이 데이터를 학습하면 한국어로 표이미지를 이해하는 chat bot을 만들 수 있을 것 같습니다.

      이 데이터는 6만개의 이미지 QA 셋이 존재하고 샘플 하나를 살펴보면,


      이런 표 이미지와


      표에 대한 질의 응답 내용을 담고 있는 것을 확인할 수 있습니다.


      이 데이터를 활용해 학습하면 표에 대해서 이해하는 MLLM을 학습할 수 있겠네요!

      다음은 스탭은 모델과 학습 파이프라인을 모두 공개한 repository를 찾는 것 입니다.

      먼저 최신 MLLM에서 SOTA의 성능을 가지는 모델들을 찾아봅시다.


      MLLM의 성능 leaderboard인 OpenCompass 기준으로

      open-source 모델인 Qwen2-VL, InternVL2, LLaVA-OneVision 세 개의 모델이 눈에 띄고 많이 알려져있는 모델입니다.

      • Qwen2-VL: 모델은 공개되어있지만 학습 pipeline이 Qwen-VL까지만 공개되어있음 (Qwen2-VL은 공식 지원하지 않음)

      • InternVL2: 모델과 학습 pipeline 모두 공개

      • LLaVA-OneVision: 모델과 학습 pipeline 모두 공개

      InternVL2과 LLaVA-OneVision 모두 fine-tuning을 할 수 있도록 제공하고 모델과 코드를 모두 제공하고 있는 것을 확인하였고,

      그 중 이번 포스팅은 InternVL2의 모델과 학습 pipeline을 선택하여 진행해 보겠습니다.

      InternVL2 가 무엇인가?

      Shanghai AI Laboratory에서 만든 Multimodal Model로 위 3개의 모델 중에는 가장 먼저 리더보드 상위에 자리했음에도 아직까지 상위권을 유지하고 있는 모델입니다.

      모델에 대한 특징을 설명 드리면


      • Dynamic high resolution: 이미지를 여러장의 tile로 나눠 encoding하여 image의 aspect ratio를 어느정도 유지하면서 디테일한 pixel도 같이 보는 방식

      • projection-based auto-regressive 모델: 이미지를 encoding하고 dimension을 맞추는 projection을 통해 이미지를 LLM의 text token embedding space에 align 시킨 방식

      • high-quality task 데이터 학습: 다양한 image understanding task를 수행할 수 있도록 학습으로 요약할 수 있고, 이 내용은 다른 MLLM 모델들에서도 많이 확인할 수 있는 특징이기도 합니다.

      InternVL2로 공개한 모델 중 학습에 용이하도록 크기가 작으면서 한국어 학습이 어느정도 가능한 모델로 InternVL2-1B 모델을 우리의 base 모델로 선정하겠습니다.


      InternVL2-1B는 multilingual을 지원하면서 한국어 성능이 잘 나오는 Qwen2-0.5B-Instruct 모델을 LLM backbone으로 사용하고 있어 한국어를 학습시키기 좋은 최적의 모델이라고 볼 수 있습니다. :)


      정리하면

      • Model: InternVL2-1B

      • Dataset: Table-VQA-ko

      • Scenario: 한국어 표를 읽고 이해할 수 있는 MLLM chat 모델

        으로 요약 하겠습니다.


      학습

      InternVL 학습 파이프라인의 가이드를 살펴보고 학습 환경을 먼저 준비합시다.

      그리고 데이터와 base 모델을 준비해야하는데요.

      다음과 같은 구조로 data/ 와 models/ 파일들을 준비해 봅시다. 데이터셋과 모델은 huggingface-cli 를 이용하면 쉽게 다운로드 할 수 있습니다.


      Table-VQA-ko데이터는 json파일로 제공되는 반면에 InternVL 학습 파이프라인은 jsonl 파일을 지원합니다.

      또, Table-VQA-ko 데이터는 누락된 이미지들이 존재하여 누락된 이미지를 제외하고 jsonl 파일로 만들어 봅시다. (첨부파일로 코드 제공)


      데이터가 준비 됐으면 데이터 configuration을 만들어 줘야합니다. (첨부파일로 제공)


      그리고 학습 script (internvl_chat/shell/internvl2.0/2nd_finetune/internvl2_1b_qwen2_0_5b_dynamic_res_2nd_finetune_full.sh)를 준비된 데이터와 모델에 맞게 수정해 봅시다.


      수정해야할 내용은

      • OUTPUT_DIR='checkpoints/internvl2_1b_qwen2_0_5b_table_vqa_ko': 학습된 모델을 저장할 경로로 자유롭게 변경

      • --model_name_or_path "./models/InternVL2-1B": InternVL2-1B로 부터 finetuning 할 수 있도록 변경

      • --meta_path "./shell/data/table_vqa_ko.json": Table-VQA-ko data configuration 지정

      • --freeze_backbone False: Vision encoder (SigLIP)의 한국어 text를 읽는 능력이 약할 것이므로 학습 할때 Vision encoder도 함께 학습하도록 설정

      • --deepspeed "zero_stage3_config.json": GPU resource 부족할 경우 zero-1에서 zero-3로 변경

      입니다. (첨부파일로 제공)


      그럼 학습 준비가 모두 완료되었으므로 GPUS 환경변수는 준비된 개수에 맞게 설정하고 학습을 진행합니다.

      GPUS=8 PER_DEVICE_BATCH_SIZE=1 sh shell/internvl2.0/2nd_finetune/internvl2_1b_qwen2_0_5b_dynamic_res_2nd_finetune_full_table_vqa_ko.sh

      A100 8대 기준으로 1 epoch 학습시키는데 1시간30분 정도 소요 되었습니다.


      학습 그래프를 살펴보니


      learning curve가 잘 떨어진 것을 확인 할 수 있네요. 학습이 완료되었습니다!


      데모

      그럼 사용해봐야겠죠?

      다행히 InternVL pipeline에서 demo도 지원하고 있습니다. 가이드를 잘 따라서 실행해보면


      우리가 학습시킨 모델이 잘 올라와있는 것을 확인 할 수 있습니다. System Prompt는 default로 중국어가 작성되어있으니 삭제하겠습니다.

      시나리오대로 실행해 보겠습니다.


      이 표를 넣고 "이 표에 대해 설명해줘" 라고 해보겠습니다.


      학습에 사용한 데이터에 담겨있는데로 표를 추출하고 요약, 주요 내용, 배경, 의미에 대해서 잘 설명하고 있네요.

      그럼 LLM의 능력를 활용하여 후속 질문도 해 보겠습니다.


      수치를 잘 읽고 질문에 답변을 잘 하고 있습니다. 중간 중간 틀린내용이 보이지만 0.5B LLM을 활용한 것으로 어느정도 이해해 볼 수 있을 것 같습니다.


      결론

      이번 포스팅에서는 Open-source Multimodal LLM을 활용하여 간단한 서비스 시나리오에 맞는 모델을 학습해 보았습니다.


      비록 간단한 prototyping이라 0.5B의 작은 모델과 6만개의 적은 데이터로 2시간이 넘지 않는 시간동안 모델을 학습하였지만,

      데이터가 의도한 데로 모델이 잘 학습되어 시나리오를 잘 수행한 것을 확인 할 수 있었습니다.

      간단한 prototyping으로 가능성을 확인해 보았으니 모델 크기를 더 키우고 데이터도 더 많이 확보하면 서비스 상용화를 할 수 있는 모델을 빠르게 만들어볼 수 있는 가능성이 열린 것 같습니다.


      비록 저는 A100 8대로 진행하였지만 zero-stage를 조절하고 GPU개수를 줄이면 훨씬 적은 resource로도 충분히 여러분들도 모델을 학습해서 상용화에 도전해 볼 수 있습니다.


      도전하세요!

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      제롬 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기