Post

[HelloWorld 개발일지] Bllossom 모델 도입 필요성 검토를 위한, VLLM과 양자화 실험

실험 필요성?

기존 저희 챗봇 프로토타입은 GPT-api를 사용하고 있었는데, 향후 사용자 수가 증가함에 따라(과연 그럴까..) api 비용도 증가될까 우려되어, 자체 모델을 서빙해서 사용하는 방법도 고려하고 있었습니다. 이를 위해선 역시 비용 관점에서 하드웨어 요구 사항을 정확히 파악하고, 모델의 성능에 대한 실험을 통해 그 효용성을 계산할 필요가 있었습니다. 따라서 기존 프로토타입과 비교해 양자화와 vLLM을 사용한 모델이 얼만큼의 효용성을 보이는지 직접 비교, 테스트 하는 실험을 진행해 봤습니다.

실험

본 실험은 대규모 언어 모델(LLM)의 성능 최적화 기법인 양자화와 추론 가속화 라이브러리인 vLLM의 효과를 평가하기 위해 설계되었습니다. 구체적으로, 한국어 LLaMA 모델인 “llama-3-Korean-Bllossom-8B”를 대상으로 하여 양자화와 vLLM 적용이 모델의 성능과 효율성에 미치는 영향을 분석하고자 합니다.

실험 설계

  1. 통제 변인:
    • 샘플링 파라미터: 모든 조건에서 동일한 샘플링 파라미터를 사용하여 텍스트 생성의 일관성을 유지
      • Temperature: 0.6
      • Top-p: 0.95
      • Max tokens: 2048
    • 프롬프트: 모든 조건에서 세 가지 동일한 프롬프트 사용
    • 1
      2
      3
      
         "서울의 유명한 관광 코스를 만들어줄래?"
         "한국 전통 음식 중 외국인에게 추천할 만한 것은?"
         "기후 변화에 대응하기 위해 개인이 할 수 있는 일은?"
      
    • 시스템 프롬프트: 모든 조건에서 동일한 시스템 프롬프트 사용
    • 1
      
       "You are a helpful AI assistant. Please answer the user's questions kindly. 당신은 유능한 AI 어시스턴트 입니다. 사용자의 질문에 대해 친절하게 답변해주세요."
      
  2. 변인:
    • 양자화 여부:
      • 원본 모델: MLP-KTLim/llama-3-Korean-Bllossom-8B
      • 양자화 모델: ohmyhong/llama-3-Korean-Bllossom-8B-awq (AWQ 양자화 적용)
    • vLLM 사용 여부:
      • Transformers 라이브러리 사용
      • vLLM 라이브러리 사용
  3. 평가 요소:
    • 모델 크기 (GB)
    • 추론 시간 (초)
    • 생성된 토큰 수
    • 초당 처리된 토큰 수 (tokens/second)

실험 방법

  1. 실험 환경 준비:
    • IDE: GOOGLE COLAB
    • GPU 환경: A100
  2. 실험 조건 설정:
    • 원본 모델 + Transformers
    • 원본 모델 + vLLM
    • 양자화 모델 + Transformers
    • 양자화 모델 + vLLM
  3. 실험 절차 단계:
    • 모델 로드 및 초기화
    • 각 프롬프트에 대해 텍스트 생성 수행
    • 각 생성에 대한 추론 시간, 생성된 토큰 수, 초당 처리된 토큰 수 측정
    • 모델 크기 기록 (사용자가 직접 조사)
    • 결과의 평균값 계산

결과

결과는 크게 추론 성능 비교, 하드웨어 사용량 비교, 모델 출력 비교가 있습니다.

추론 성능 비교

Time to First Token,TTFT (초)

모델 설정프롬프트 1프롬프트 2프롬프트 3평균
원본 모델5.34900.04470.04691.8135
원본 모델 + vLLM0.05510.03350.03070.0398
양자화 모델1.08210.06470.06380.4035
양자화 모델 + vLLM0.03520.03520.03290.0425

Inference Time (초)

모델 설정프롬프트 1프롬프트 2프롬프트 3평균
원본 모델24.8925.6427.4826.01
원본 모델 + vLLM10.227.699.389.10
양자화 모델38.9327.3515.7727.35
양자화 모델 + vLLM6.544.405.795.57

처리 속도 (토큰/초)

모델 설정프롬프트 1프롬프트 2프롬프트 3평균
원본 모델19.9625.4725.5123.65
원본 모델 + vLLM68.5668.9368.8768.79
양자화 모델15.6415.9416.0415.87
양자화 모델 + vLLM94.5295.9795.7295.40

main

  • 추론 시간:

모든 프롬프트에서 ‘양자화 모델 + vLLM’ 설정이 가장 짧은 추론 시간을 보여줍니다. ‘양자화 모델’ 단독 사용 시 일부 프롬프트에서 가장 긴 추론 시간을 보입니다. vLLM 사용 시 항상 추론 시간이 크게 감소했습니다.

  • 처리 속도 (토큰/초):

‘양자화 모델 + vLLM’ 설정이 모든 프롬프트에서 가장 높은 처리 속도를 보여줍니다. vLLM을 사용하지 않은 설정들은 상대적으로 낮은 처리 속도를 보입니다. ‘양자화 모델’ 단독 사용 시 가장 낮은 처리 속도를 보였습니다.

  • 모델 간 차이:

vLLM을 사용한 모델들(원본 + vLLM, 양자화 + vLLM)이 사용하지 않은 모델들에 비해 월등히 좋은 성능을 보입니다. 양자화 모델은 단독으로 사용 시 성능이 저하되지만, vLLM과 결합하면 가장 좋은 성능을 보입니다.

  • 프롬프트 간 차이:

프롬프트 간 차이는 있지만, 모델 설정 간 차이에 비하면 유의미하진 않습니다. vLLM을 사용한 경우, 프롬프트 간 차이가 더욱 줄어듭니다.

하드웨어 사용량 비교

모델 설정시스템 RAM (GB)GPU RAM (GB)모델 크기 (GB)
원본 모델3.315.816.07 GB
원본 모델 + vLLM7.835.3*16.07 GB
양자화 모델3.46.05.74 GB
양자화 모델 + vLLM7.735.7*5.74 GB

* 표시는 높은 메모리 사용량을 나타냅니다. 굵은 글씨는 각 카테고리에서 가장 낮은 사용량을 나타냅니다.

main

  • vLLM을 사용하는 설정(원본 모델 + vLLM, 양자화 모델 + vLLM)이 시스템 RAM과 GPU RAM 모두에서 높은 사용량을 보입니다. 양자화 모델이 단독으로 사용될 때 가장 낮은 GPU RAM 사용량을 보입니다.

  • 원본 모델과 양자화 모델은 비슷한 수준의 시스템 RAM을 사용하지만, GPU RAM 사용량에서 큰 차이를 보입니다. vLLM 사용 시 하드웨어 리소스 사용량이 크게 증가하는 것을 명확히 볼 수 있습니다.

출력 비교

1. 원본모델

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Sample 1:
Instruction: 서울의 유명한 관광 코스를 만들어줄래?
Generated Text:
물론이죠! 서울은 다양한 역사적, 문화적 명소와 현대적인 아케이드가 공존하는 도시로, 많은 관광객들이 찾는 인기 있는 여행지입니다. 아래는 서울에서 방문해야 할 주요 관광지를 포함한 일일 관광코스입니다.

### 서울 일일관광코스로 가는 길

#### 1단계: 아침
- **경복궁**: 한국의 대표적인 조선 왕조의 궁궐로, 아침 일찍 방문하면 더 조용하고 멋진 사진을 찍을 수 있습니다.
  - 주소: 서울특별시 종로구 경복궁로 161
  - 시간: 오전 9:00 ~ 오후 5:00 (월요일: 휴장)

#### 2단계 중간 식사
- 근처에는 다양한 전통 한식당이나 카페가 많습니다. 경복원 내 또는 인근에서 간단히 점심을 즐겨보세요.

#### 3단계:
- **북촌 한옥마을**: 전통한옥이 모여있는 고즈넉한 마을로, 사진 촬영하기 좋은 곳입니다.
  주소 : 서울특별시 종로는 북촌 한오클라스트리 거리 및 그 주변

####4단계
- 기념품 쇼핑
  + **인사동**: 전統 한복, 기념물품 등을 구입할 수 있는 인기가 높은 지역입니다.
    주소 서울특별시 종로서길

####5단계 저녁 식사 및 휴식
- 인사동 인근에 위치한 레스토랑에서 저녁을 즐기거나, 인사 동거리에서 전통 예술 공연을 감상해보세요.

### 옵션 코스
- 서울타워: 저녁 시간대에 서울타운을 방문하여 야경을 감상을 하고, 전망대에서 서울의 밤 풍경을 볼 수도 있습니다.
    - 주소를 서울특별시 동작구 상도동 105-1

### 추가 팁
- 대중교통 이용: 지하철과 버스를 활용하여 이동하세요. 서울은 잘 발달된 교통 시스템을 가지고 있어 쉽게 이동할 수 있습니다.

이 코스는 서울의 다양한 매력을 경험할 수 있도록 구성했습니다. 즐거운 여행 되세요!

2. 원본모델+vLLM

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sample 1:
Instruction: 서울의 유명한 관광 코스를 만들어줄래?
Generated Text:
물론입니다! 서울은 다양한 문화, 역사, 자연, 그리고 현대적인 매력을 동시에 자랑하는 도시로, 많은 관광객들이 찾는 인기 있는 여행지입니다. 아래는 서울의 유명한 관광 코스입니다.

### 1단계: 역사와 문화 탐방
1. **경복궁 (Gyeongbokgung Palace)**: 조선 시대의 대표적인 궁궐로, 조선 왕조의 역사와 건축 양식을 체험할 수 있습니다.
2. **창덕궁 (Changdeokgung Palace)**: 경복궁과 함께 조선 왕조의 궁궐로, 특별히 유명한 후원과 경회루를 방문해 보세요.
3. **북촌 한옥마을 (Bukchon Hanok Village)**: 전통 한옥이 있는 마을로, 조선 시대의 전통 주거지와 문화를 체험할 수 있습니다.

### 2단계: 현대적인 서울
1. **명동 (Myeongdong)**: 쇼핑과 음식으로 유명한 거리로, 다양한 브랜드 매장과 전통 시장, 그리고 다양한 음식점이 있습니다.
2. **인사동 (Insa-dong)**: 전통 예술과 문화를 체험할 수 있는 거리로, 전통 한옥과 갤러리, 전통 음식점이 많이 있습니다.
3. **홍대 (Hongdae)**: 젊은층을 중심으로 한 문화와 예술이 활성화된 지역으로, 스트리트 아티스트와 다양한 카페가 있습니다.

### 3단계: 자연과 휴식
1. **남산 서울타워 (Namsan Seoul Tower)**: 서울의 전경을 한눈에 볼 수 있는 전망대로, 산책로와 공원도 즐길 수 있습니다.
2. **한강공원 (Hangang Park)**: 한강변을 따라 위치한 공원으로, 자전거 도로와 산책로, 공연장 등 다양한 시설이 있습니다.
3. **북촌 한강공원 (Bukhan Han River Park)**: 북촌 한옥마을과 맞닿아 있는 공원으로, 한강변의 아름다운 풍경을 즐길 수 있습니다.

### 4단계: 먹거리와 ніч문화
1. **명동夜시장 (Myeong-dong Night Market)**: 명동의 밤 시장이 열리는 곳으로, 다양한 음식과 쇼핑을 즐길 수 있습니다.
2. **홍대夜시장 (Hongdae Night Market)**: 홍대의 밤 시장으로, 다양한 음식과 전통 음료, 스타일리시한 아이템을 찾을 수 있습니다.
3. **잠실 롯데월드 (Jamsil Lotte World)**: 롯데월드 테마파크와 롯데월드몰, 롯데호텔이 위치한 복합 쇼핑 및 엔터테인먼트 복합단지입니다.

이 코스는 서울의 다양한 매력을 경험할 수 있는 기본적인 계획입니다. 각 지역마다 다양한 옵션이 있으니, 개인의 취향에 맞게 추가 계획을 세우면 더 재미있는 여행이 될 것입니다.

3. 양자화모델

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Sample 1:
Instruction: 서울의 유명한 관광 코스를 만들어줄래?
Generated Text:
물론입니다! 서울은 세계적으로 유명하고 다양한 문화, 역사, 자연 등을 경험할 수 있는 도시입니다. 다음은 서울의 주요 관광코스로 추천하는 순서입니다:

### 1. 경복궁 (Gyeongbokgung Palace)
- **주소:** 서울 중구 새문안로1
- **설명:** 조선 왕조 최초의 궁전으로, 한국의 전통과 역사를 느낄 수 있습니다.

### 2. 창덕고등학교 (Changdeokguk School)
-   **주소:** 서울특별시 종로구 창덕가길 21
-   **설정:** 조선 시대의 교육 기관으로, 역사적 가치가 높습니다.

###   3. 불국사 (Bulguksa Temple)
    - **주소:**
        + 부산광역시 금산면 일산리 707 (본원)
        + 서울시 동대문구 서강로 7 (분당벼룩아동박물관)
    -
    -   ** 설명:** 불국사는 대한민국에서 가장 중요한 불교 사찰로, 건축과 미술 모두 뛰어납니다.

###     4. 남산 (Namsan Park)
    -

    -  **주소**: 서울특별시 용산구 남산5단지10번길
    -  
    -    **설정이:** 남산에는 여러 명소들이 있으며, 특히 남산타워(N Seoul Tower)는 사랑을 기념하기 위한 곳으로 유명합니다.

###       5. 홍dae University Street
    -

      -  **
        **주소**
        : 서울특별시 마포구 서교동 201-1
      -   **
        -   설명:
            -   대학가인 홍대는 다양한 음식점, 카페, 상점 등이 모여 있어 즐거운 시간을 보낼 수 있습니다.
    
###         6. Myeong-dong Shopping District
    -
      - **위치:** 서울특별시 중구 명동 10-1, 3-4, 5-4
      -
      -
    -
        -  설명:
          -   명동은 쇼핑, 패션, 맛집 등 모든 것을 즐길 수 있는 대표적인 관광 지역입니다.

4. 양자화모델+ vLLM

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Sample 1:
Instruction: 서울의 유명한 관광 코스를 만들어줄래?
Generated Text:
서울의 유명한 관광 코스를 만들어 드리겠습니다. 서울은 다양한 문화, 역사, 자연, 쇼핑, 음식 등 다양한 관광 자원이 풍부한 도시이기 때문에, 다양한 주제를 고려하여 코스를 구성할 수 있습니다. 다음과 같은 코스를 추천합니다:

### 코스 1: 역사와 문화

1. **경복궁**: 조선시대의 궁전으로, 서울의 가장 오래된 궁전 중 하나입니다.
2. **창덕궁**: 조선시대의 궁전으로, 특히 '창덕궁 옹의 전망대'에서 서울의 전경을 볼 수 있습니다.
3. **인사동**: 전통 문화예술을 체험할 수 있는 곳으로, 다양한 전통 시장과 문화 공간이 있습니다.
4. **국립중앙박물관**: 한국의 역사, 미술, 과학을 전시하는 국립 박물관입니다.
5. **서울역사박물관**: 서울의 역사와 문화를 체험할 수 있는 박물관입니다.

### 코스 2: 자연과 녹지

1. **남산국립공원**: 서울에서 가장 큰 공원으로, 숲길을 걸으며 휴식을 취할 수 있습니다.
2. **서울숲**: 도시 내에서 자연을 느낄 수 있는 공간으로, 다양한 생태관광을 즐길 수 있습니다.
3. **한강시민공원**: 한강변의 녹지공원으로, 걷기, 자전거 타기 등 다양한 활동을 즐길 수 있습니다.
4. **서울랜드**: 주말에는 다양한 이벤트와 공연이 열리는 곳으로, 가족과 함께 즐길 수 있습니다.

### 코스 3: 쇼핑과 음식

1. **명동**: 쇼핑과 음식을 즐길 수 있는 명동 상가입니다.
2. **홍대시장**: 전통 시장으로, 다양한 한국 요리를 맛볼 수 있습니다.
3. **갤러리아 타임스퀘어**: 명동과 홍대 사이에 위치한 쇼핑몰입니다.
4. **신촌3.4길**: 한국의 전통 음식과 음료를 즐길 수 있는 길입니다.

### 코스 4: 현대 문화

1. **홍대역사공원**: 현대적인 공원으로, 다양한 예술 작품과 공연이 열립니다.
2. **갤러리 현대**: 현대 미술을 즐길 수 있는 갤러리입니다.
3. **이화여고**: 현대적인 건축물로, 건축 전시를 즐길 수 있습니다.
4. **서울 아레나**: 스포츠와 엔터테인먼트를 즐길 수 있는 곳입니다.

이러한 코스를 통해 서울의 다양한 면모를 경험할 수 있습니다. 개인의 취향에 따라 코스를 조정하여, 더 만족스러운 여행을 즐길 수 있습니다.
  • 정량적 지표로 평가가 어렵기에, 정성평가로 결과를 살펴봤습니다.
  • 가장 눈에 띄는 건 양자화한 모델 성능이 제일 안좋았다..? 정도입니다.

결론

추론 성능 자체는 양자화 + VLLM이 압도적이다. 하지만, 하드웨어 사용량도 압도적이다..(이 부분은 파라미터로 조절 가능하다고 하는데, 추가 실험이 필요할 듯 하다.) 하드웨어 성능까지고려 해봤을 때, 그냥 원본 모델을 가져다 쓰는 것도 나쁘지 않은 선택이겠다 싶었습니다. 클라우드 환경에서 배포가 필수인 만큼, 비용과 성능의 TRADE OFF를 잘 따져가며 개발해야겠습니다.

This post is licensed under CC BY 4.0 by the author.