[인공지능 기술] WebLLM 소개와 구조 분석

WebLLM 소개와 구조 분석

김덕현
 

7 min read

2022년 11월 ChatGPT가 초기 베타버전을 출시한 이후 많은 사용자들이 이러한 언어 모델에 관심을 가지고 한동안 폭발적인 반응과 시장의 변화를 가져오면서 관심이 집중되고 있습니다.

한번쯤 사용해 보셨을(혹은 들어 보셨을) LLM과 컴파일, 빌드 과정에 대해 간단히 소개하고 최근 크롬에 정식 탑재된 WebGPU를 사용한 WebLLM의 구조 형태를 가볍게 분석해보고자 합니다.

관련 용어와 개념 소개

일반적인 어플리케이션 위주의 개발을 수행해온 저는 새로운 도메인이자 엔지니어링 영역이기도 한 AI 및 Machine learning에 대해 학습하면서 다양한 용어와 개념들을 새로 학습해야 했습니다. 이와 같은 분들을 위해 WebLLM의 구조에 대해 이야기하기 전에 먼저 용어와 기반 개념들을 소개하고자 합니다.

LLM

https://twitter.com/akshay_pachaar/status/1667147092614336512

대형 언어 모델(Large Language Model)이라고도 불리는 LLM은 ChatGPT 베타 출시 이후로 더욱 유명해진 딥러닝 모델입니다. 기본적인 개념으로는 입력값으로 들어오는 자연어를 기반으로, 통계학적으로 가장 적절한 출력값을 내는 원리로 되어 있습니다. 간단하게 이야기하자면 다음 단어가 나올 확률을 계산하여 그럴듯한 문장을 만들어내는 것이라고 할 수 있습니다.

MLC-LLM 프로젝트

MLC LLM의 세 가지 독립 하위 모듈: https://llm.mlc.ai/docs/get_started/project_overview.html

MLC-LLM 프로젝트는 LLM을 다양한 환경에서 배포하고 범용 API를 통해 쉽게 사용할 수 있도록 돕는 배포 솔루션입니다. 위 이미지와 같은 일련의 과정을 통해 모델을 정의하고 컴파일한 후 각 디바이스 플랫폼별 런타임에서 LLM을 실행할 수 있도록 구성되어 있습니다.

  1. MLC에서 미리 정의해 둔 모델(Llama2 등)을 사용하거나, TVM Unity 인터페이스 기반의 파이썬으로 작성된 모델을 구현해야 합니다.
  2. 후술할 TVM Unity를 통해 컴파일되며, 이 때 model lib, weights, config 결과물이 export됩니다. 우리가 사용하게 될 웹 브라우저의 라이브러리(WebAssembly)는 .wasm의 형태로 떨어지게 됩니다.
  3. 각 디바이스 플랫폼별 런타임에서 컴파일된 모델 라이브러리와 가중치(weights), 설정 등을 로드하여 실행되며, 각 런타임별 API가 제공됩니다.

TVM

TVM의 컴파일러 스택과 런타임: https://www.kc-ml2.com/posts/blog_TVM

이러한 LLM 등의 AI 어플리케이션을 생성하고 하드웨어 장치에서 실행하기 위해서는 우리가 어플리케이션을 만들 때와 동일하게 소스 코드를 변환하여 저수준의 layer에서 인식할 수 있는 코드로 변환하고 실행하는 과정이 필요합니다. 예를 들어 윈도우 환경의 Nvidia 그래픽 연산 카드에서 AI 어플리케이션을 구동해야 할 경우, python으로 설계한 모델 코드는 C++ 및 CUDA 코드로 변환되고 최종적으로 각 하드웨어를 위한 어셈블리 언어로써 변환됩니다.

Apache TVM이라는 end-to-end 오픈소스 컴파일러에서는 이러한 과정(딥러닝 시스템 스택)에 대해 인터페이스를 제공하며 아래에서 살펴볼 WebLLM을 위한 WebAssembly 런타임 또한 제공됩니다.

WebLLM

MLC에서는 TVM에서 제공하는 WebAssembly 런타임 및 자바스크립트 인터페이스를 응용하여 Chat 형식으로 구성된 WebLLM을 배포했습니다. 이를 사용하면 서버와의 통신 없이 오로지 웹 브라우저에서 WebGPU의 가속을 사용하여 LLM을 구동할 수 있습니다.

WebGPU

WebGPU는 WebGL의 후속 버전 API입니다. 이미지 등 그래픽 연산에 집중되던 WebGL과는 다르게 GPU에서 일반적인 계산을 수행하는 데 더 최적화되어 있습니다. 또한 네이티브 API를 직접 미러링하지 않고 자체적인 추상화를 도입하여 웹용 API에 적합하지 않은 개념들(저수준의 메모리 관리 등)을 숨기고 편하게 사용될 수 있도록 설계되었습니다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

다만 현재(2023.10)는 크롬 113 이상(Windows, MacOS, ChromeOS)에서만 지원하고 있습니다: https://caniuse.com/?search=webgpu

WebLLM 환경 구축하기

???? 순서: emscripten 설치 → tvmjs 컴파일 → web-llm 빌드

WebLLM을 로컬에서 빌드하고 패키징하기 위해서는 몇 가지 작업이 필요합니다. WebLLM 빌드에 앞서 의존성 패키지를 살펴보면, tvmjs만 유일하게 패키지로 제공되지 않고 소스 컴파일이 필요합니다.

tvmjs 컴파일을 위해서는 emscripten을 먼저 설치해야 합니다. emscripten은 LLVM을 사용하는 언어(C/C++)를 웹 어셈블리로 컴파일할 수 있도록 제공하는 툴체인이며, TVM의 WebAssembly 런타임을 컴파일하고 시스템 라이브러리 지원을 제공하기 위해 필요합니다.

emscripten SDK 설치 과정: https://emscripten.org/docs/getting_started/downloads.html#installation-instructions-using-the-emsdk-recommended

emscripten 설치가 완료되었다면, WebLLM repo의 스크립트(scripts/prep_deps.sh)를 실행하여 순서대로 tvmjs를 컴파일하고 패키지를 빌드할 수 있습니다.

script/prep_deps.sh
script/prep_deps.sh 실행 결과

WebLLM 구조

WebLLM의 Javascript단 API 구조는 상대적으로 단순하게 구성되어 있습니다. 우리가 흔히 접해왔던 ChatGPT와 같은 형태의 LLM을 서포트하기 위해서 아래와 같이 chat 서비스에 초점이 맞춰진 핵심 모듈들로 구성되어 있습니다.

  • ChatModule: 사용자 단의 메소드를 제공하는 외부 인터페이스를 구현하고 있으며, LLMChatPipeline을 직접 제어하며 WebLLM 초기화프롬프트 전송 등의 추상화된 개념을 구현하고 있습니다.
  • LLMChatPipeline: TVM 런타임 인스턴스의 초기화/실행 등의 직접 제어를 수행하고, Conversation 데이터에 접근하면서 프롬프트 메시지를 제어합니다.
  • Conversation: 메세지와 관련된 데이터의 제어를 수행하며, 각 LLM별로 적합한 Instruction config를 정의하고 있습니다.

이 외에도 WebLLM에서 사용할 설정의 인터페이스를 구현한 Config, WebWorker 형태로 ChatModule을 사용할 수 있도록 구성된 ChatWorkerHandler 등이 존재합니다.

WebLLM의 Javascript단 API를 실행하는 샘플 로직과 내부 Flow는 아래와 같습니다.

Start Example: https://github.com/mlc-ai/web-llm
Example Flow

 

[출처] https://medium.com/@widoint/webllm-%EC%86%8C%EA%B0%9C%EC%99%80-%EA%B5%AC%EC%A1%B0-%EB%B6%84%EC%84%9D-2cfeac159454

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
58 [인공지능 기술] "GPT 성능 향상 속도 둔화"...오픈AI, '오라이온' 개선 위해 전략 수정 file 졸리운_곰 2024.11.11 12
» [인공지능 기술] WebLLM 소개와 구조 분석 file 졸리운_곰 2024.11.07 10
56 [인공지능 기술] 이성에게 7번 차이고 인형과 결혼한 日남성…6주년 맞은 근황 file 졸리운_곰 2024.11.06 5
55 [인공지능 기술] 챗GPT, 인간보다 창의적일까? ‘No!’ [달콤한 사이언스] file 졸리운_곰 2024.10.31 6
54 [인공지능 기술] [10월3주] AGI의 핵심으로 떠오른 '월드 모델'이란 file 졸리운_곰 2024.10.25 8
53 [인공지능 기술] 소규모 언어 모델(SLM) 소규모 언어 모델의 부상: AI를 위한 효율성과 맞춤화 : Small Language Models (SLMs) file 졸리운_곰 2024.09.29 11
52 [인공지능 기술] AI "아내보다 날 더 사랑해줘"...남자는 대화 6주만에 목숨 끊었다 file 졸리운_곰 2024.09.20 10
51 [인공지능 기술] 추석 '농로 내비 대란'…"AI 맹신이 몰고 올 위기 보여줬다" file 졸리운_곰 2024.09.19 10
50 [인공지능 기술] 이런 것도 다 되네, 알수록 신박한 AI 앱 [스페셜리포트] file 졸리운_곰 2024.09.10 18
49 [인공지능 기술] RAG(검색 증강 생성)란? – LLM 단점을 보완하는 기술 file 졸리운_곰 2024.09.02 20
48 [인공지능 기술] AI 기반 물리 정보 신경망을 이용한 시뮬레이션 file 졸리운_곰 2024.08.13 20
47 [인공지능 기술] '집컴'으로 실행한 일기예보 AI, 슈퍼컴 이겼다 file 졸리운_곰 2024.07.30 24
46 [인공지능 기술] [표지로 읽는 과학] AI가 생성한 데이터 학습한 AI, 오염된 정보 낳는다 file 졸리운_곰 2024.07.28 16
45 [인공지능 기술] GPU 추가 없이 메모리 확장, 대규모 AI 활용 성능 2배 '업' file 졸리운_곰 2024.07.09 33
44 [인공지능 기술] "대학에서 고득점 받은 AI가 쓴 답안, 걸러지지 않았다" file 졸리운_곰 2024.06.27 23
43 [인공지능 기술] 인공지능 ‘블랙박스’ 풀리나 file 졸리운_곰 2024.05.28 18
42 [인공지능 기술] 메타 AI 책임자 “LLM, 인간 추론 능력 도달 못해” file 졸리운_곰 2024.05.24 18
41 [인공지능 기술] AI컴퓨터가 전부 캡처…과거 작업화면 필요할때 불러온다 file 졸리운_곰 2024.05.22 26
40 [인공지능 기술] 인간 배신하고 허세 부리는 '속임수 달인' AI file 졸리운_곰 2024.05.13 28
39 [인공지능 기술] "거짓말 하는 AI, 죽은 척까지 한다"…MIT 섬뜩한 경고 file 졸리운_곰 2024.05.12 27
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED