TinyLlama 1.1B - 크기는 중요하지 않습니다.

TinyLlama 1.1B – 크기는 중요하지 않습니다

소스 노드 : 3081711

개요

빠르게 성장하는 인공 지능 및 기계 학습 환경에서 TinyLlama 1.1B는 주목할만한 개발로 등장합니다. 계산상의 제약으로 인해 더 복잡한 모델을 실행하는 데 어려움이 있는 시대에 TinyLlama는 기대를 뛰어넘는 뛰어난 성능을 자랑합니다. 컴팩트 모델의 놀라운 성능을 보여줍니다.

이 글은 컴팩트한 대형 언어 모델인 TinyLlama 1.1B에 대한 분석을 제공하는 것을 목표로 합니다. 성능 벤치마크에서 어떻게 훈련되었는지, Hugging Face 플랫폼을 사용한 실제 구현과 같은 핵심 측면을 자세히 살펴보겠습니다. 우리는 무료 Google Colab에서 이 모델을 실행하고 수학과 추론 능력을 테스트할 것입니다.

타이니라마 1.1B

학습 목표

  • TinyLlama 1.1B에 대해 포괄적으로 이해하세요.
  • 모델이 겪은 복잡한 훈련 과정을 살펴보세요.
  • 성능 및 벤치마크 결과를 분석하여 효율성을 평가합니다.
  • 코딩 예제를 사용하여 TinyLlama 1.1B를 구현하는 실제 단계를 알아보세요.

이 기사는 데이터 과학 블로그.

차례

TinyLlama 1.1B란 무엇입니까?

더 광범위한 Llama 프로젝트의 일부인 TinyLlama 1.1B는 언어 모델링 발전의 증거입니다. 이는 1.1억 개의 매개변수를 갖춘 모델로, 무려 3조 개의 토큰에 대해 훈련되어 AI 환경에서 독특한 위치를 차지합니다. 더 큰 버전과 달리 TinyLlama 1.1B는 더 효율적이고 관리하기 쉽도록 설계되었으므로 계산 리소스가 제한된 애플리케이션에 적합합니다.

이 오픈 소스 모델은 최첨단 AI 기술에 대한 액세스를 민주화하여 많은 개발자와 연구자가 자연어 처리 분야를 탐색하고 혁신할 수 있도록 합니다. 이는 오늘날의 다양한 컴퓨팅 환경에서 중요한 고려 사항인 리소스 소비와 성능의 균형을 맞추는 능력으로 잘 알려진 모델입니다.

TinyLlama 1.1B의 훈련 과정

TinyLlama 1.1B의 훈련 과정은 모델 자체와 마찬가지로 매우 흥미롭습니다. TinyLlama의 훈련은 단 90일 동안 진행되었으며 16개의 A100-40G GPU에서 훈련되었습니다. 사전 훈련은 3조 토큰으로 수행되었으며 TinyLlama 팀은 각 XNUMX조 개 사이의 중간 모델을 게시했습니다. 

데이터는 Slimpajama와 Starcoderdata를 합쳐서 950억 토큰의 데이터 세트 크기로 촬영되었습니다. 자연어 대 코드 비율은 7:3으로 유지되었습니다. 즉, 데이터의 70%가 자연어이고 30%가 코드였습니다. 따라서 미세 조정을 위한 3조 토큰 마크를 달성하기 위해 TinyLlama는 이 데이터 세트에 대해 3번의 교육을 거쳤습니다. 

TinyLlama-Chat이라는 TinyLlama의 채팅 버전도 출시되었습니다. 처음에 이 모델은 ChatGPT에서 생성된 다양한 합성 대화가 포함된 UltraChat 데이터 세트에서 미세 조정을 거쳤습니다. 이 단계는 모델이 다양한 대화 맥락과 스타일을 처리하도록 만드는 데 중요했습니다.

UltraFeedback 데이터 세트에서 DPOtrainer를 사용하여 추가 개선이 이루어졌습니다. 이 훈련 단계에서는 모델의 반응을 인간과 유사한 대화 패턴에 맞추는 데 중점을 두었습니다. 그 결과 다양한 주제에 대한 정보를 파악할 뿐만 아니라 자연스럽고 매력적인 방식으로 상호 작용하는 모델이 탄생했습니다.

또한 다음을 읽을 수 있습니다 : LlaMA 2 시작하기: 초보자 가이드

성능 및 벤치마크 결과

TinyLlama 1.1B의 성능을 평가하면 고품질 응답을 신속하게 제공하는 능력이 드러납니다. 교육을 통해 글로벌화된 세계에서 중요한 기능인 다국어 응용 프로그램을 수용할 수 있는 능력을 갖추게 되었습니다. TinyLlama 1.1B는 작은 크기에도 불구하고 응답 품질과 속도 면에서 여전히 더 큰 버전을 따라잡고 있어 다양한 AI 애플리케이션에서 강력한 도구가 되고 있습니다.

TinyLlama 1.1B의 벤치마크는 대형 모델의 벤치마크보다 덜 광범위하지만 여전히 복잡한 언어 작업을 처리하는 데 능숙함을 보여줍니다. 여러 언어로 일관되고 상황에 맞는 응답을 생성하는 능력은 특히 인상적입니다.​​ 이 모델은 HellaSwag, WinoGrande, ARC, MMLU 등과 같은 다양한 벤치마크에서 테스트되었습니다. 합산평균점수는 52.99로 나왔습니다. 이는 다른 1억 매개변수 모델, 즉 평균 점수 1을 달성한 Pythia 48.3B보다 훨씬 낫습니다. 표에는 각 벤치마크의 개별 점수가 나와 있습니다.

기준 TinyLlama 1.1B 점수
헬라스웨그 59.2
옵카 36.0
위노그란데 59.12
ARC_c 30.12
ARC_e 55.25
boolq 57.83
피카 73.29
평균 52.9

TinyLlama – 시작하기

여기 이 섹션에서는 TinyLlama Chat의 양자화된 버전을 다운로드하여 Google Colab에서 실행해 보겠습니다. 모델을 다운로드하기 전에 다음 Python 패키지를 다운로드하고 설치해야 합니다.

!CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip3 install llama-cpp-python 
!pip3 install huggingface-hub 
  • XNUMXD덴탈의 CMAKE_ARGS=”-DLLAMA_CUBLAS=켜짐” FORCE_CMAKE=1, llama_cpp_python이 무료 Colab 버전에서 사용할 수 있는 Nvidia GPU를 활용할 수 있게 해줍니다.
  • 그런 다음 우리는 라마_cpp_python pip3을 통해 패키지
  • 우리는 심지어 포옹얼굴허브, 이를 통해 양자화된 TinyLlama 1.1B Chat을 다운로드하게 됩니다.

TinyLlama 1.1B 채팅 모델을 테스트하려면 먼저 양자화된 버전을 다운로드해야 합니다. 다운로드하기 위해 다음 코드를 실행합니다.

from huggingface_hub import hf_hub_download

# specifying the model name
model_name = "TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF"
# specifying the type of quantization of the model
model_file = "tinyllama-1.1b-chat-v1.0.Q8_0.gguf"

# download the model by specifying the model name and quantized model name
model_path = hf_hub_download(model_name, filename=model_file)

여기, 포옹_얼굴_허브 라이브러리는 양자화된 모델을 다운로드하는 과정을 처리합니다. 이를 위해 우리는 hf_hub_다운로드 다음 매개변수를 사용합니다.

  • 모델명: 이 변수에는 다운로드하려는 모델을 전달합니다. 여기에서는 TinyLlama 1.1B Chat GGUF 모델을 다운로드하고 싶습니다.
  • 모델_파일: 여기서는 다운로드하려는 양자화 모델의 유형을 지정합니다. 여기에서는 TinyLlama 8B Chat의 1.1비트 양자화 버전을 다운로드합니다.
  • 마지막으로 이러한 매개변수를 hf_hub_다운로드, 이러한 매개변수를 가져와 지정된 모델을 다운로드합니다. 다운로드 후 모델이 다운로드된 경로를 반환합니다.
  • 반환된 이 경로는 모델_경로 변하기 쉬운.

이제 이 모델을 다음을 통해 로드할 수 있습니다. 라마_cpp_python 도서관. 모델을 로드하는 코드는 아래와 같습니다.

from llama_cpp import Llama
llm = Llama(
    model_path=model_path,
    n_ctx=512,  # the number of i/p tokens the model can take
    n_threads=8, # the number of threads to use
    n_gpu_layers=40# how many layers of the model to offload to the GPU
)

우리는 야마 수업에서 라마_cpp, 다음 매개변수를 사용합니다.

  • 모델_경로: 이 변수는 모델이 저장된 경로를 사용합니다. 우리는 이전 단계에서 경로를 얻었으며 여기서 제공할 것입니다.
  • n_ctx: 여기서는 모델의 컨텍스트 길이를 제공합니다. 현재 우리는 컨텍스트 길이로 512개의 토큰을 제공하고 있습니다.
  • n_스레드: 여기서는 사용되는 스레드 수를 언급합니다. 야마 수업
  • n_gpu_layers: 무료 Colab의 경우 실행 중인 GPU가 있는 경우 이를 지정합니다. 이에 대해 40을 전달합니다. 이는 전체 모델을 GPU로 오프로드하고 그 일부가 시스템 RAM에서 실행되는 것을 원하지 않음을 의미합니다.
  • 마지막으로, 우리는 이것으로부터 객체를 생성합니다 야마 클래스를 만들어 변수 llm에 전달합니다.

이 코드를 실행하면 TinyLlama 1.1B Chat 양자화 모델이 GPU에 로드되고 적절한 컨텍스트 길이가 설정됩니다. 이제 이 모델에 대해 몇 가지 추론을 수행할 차례입니다. 이를 위해 우리는 아래 코드로 작업합니다.

output = llm(
  "<|im_start|>usernWho are you?<|im_end|>n<|im_start|>assistantn", # User Prompt
  max_tokens=512,  # Number of output tokens generated
  stop=["</s>"],   # Token which tells the LLM to stop
)
print(output['choices'][0]['text']) # Model generated text

모델을 추론하기 위해 다음 매개변수를 LLM에 전달합니다.

  • 프롬프트/채팅 템플릿: 모델과 채팅하는데 필요한 프롬프트 템플릿입니다. 위에서 언급한 템플릿(즉 , )는 TinyLlama 1.1B 채팅 모델에서 작동하는 모델입니다. 템플릿에서 User 뒤의 문장은 User Prompt이고, Assistant 이후에 생성이 생성됩니다.
  • 최대_토큰: 이 변수에는 프롬프트가 제공될 때 대형 언어 모델이 출력할 수 있는 최대 토큰 수를 정의하는 값을 전달합니다. 현재로서는 토큰을 512개로 제한하고 있습니다.
  • 중지: 이 변수에 중지 토큰을 전달합니다. 중지 토큰은 대규모 언어 모델에 추가 토큰 생성을 중지하라고 지시합니다. TinyLlama 1.1B Chat의 경우 중지 토큰은 다음과 같습니다.

생성된 텍스트는 이를 실행할 때 출력 변수에 저장됩니다. 결과는 OpenAI API 호출과 유사한 형식으로 생성됩니다. 따라서 OpenAI 응답에서 생성에 액세스하는 방법과 유사하게 지정된 print 문을 통해 생성에 액세스할 수 있습니다. 생성된 출력은 아래에서 볼 수 있습니다.

타이니라마 1.1B

이 크기의 모델의 경우 생성된 응답은 최고 수준입니다. 이 크기의 모델에서는 예상치 못한 일입니다. 문법과 어조가 완벽하게 괜찮아 보이고, 문장이 반복되는 흔적도 없습니다. 모델의 추론 능력을 테스트해 봅시다

output = llm(
  "<|im_start|>usernIf all students who study hard get good grades, 
  and John got good grades, can we conclude that John studied hard?
  <|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
타이니라마 1.1B
output = llm(
  "<|im_start|>usernHow fast can a snake fly?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"

여태까지는 그런대로 잘됐다. 우리가 본 예에서 모델은 좋은 답변을 생성합니다. 하지만 제한된 수의 질문에 대해서만 테스트하기 때문에 이것이 모든 경우에 해당되는 것은 아닙니다. 모델의 수학 추론 기능을 테스트해 보겠습니다.

output = llm(
  "<|im_start|>usernJohn is twice as old as Sarah, and Sarah is three years 
  older than Mary. If Mary is 10 years old, how old is John?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"
output = llm(
  "<|im_start|>usernWhat is the missing number in this pattern: 
  1, 4, 9, 16, __, 36?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"

우리가 본 예에서 TinyLlamaChat이 수학의 간단한 적성 질문에 답하는 데 있어 성능이 매우 좋지 않다는 것이 분명합니다. 이는 모델이 어떤 수학 데이터세트에서도 사전 학습되지 않았기 때문에 예상되는 현상입니다. 수학 데이터 세트에서 미세 조정하여 생성 품질을 향상할 수 있습니다.

미세 조정 기능이 있는 TinyLlama는 제한된 하드웨어로 제한되어 있고 특정 데이터 세트에서 대규모 언어 모델을 미세 조정하려는 사용자에게 적합한 선택입니다.

잠재적인 사용 사례 및 애플리케이션

콤팩트한 사이즈를 생각하면 작은라마1.1억 개의 매개변수를 자랑하는 는 하드웨어 제한이나 효율성 향상으로 인해 더 큰 모델을 실현할 수 없는 환경에 주로 적합합니다. 다음은 크기를 고려한 몇 가지 구체적인 사용 사례입니다.

모바일 애플리케이션 : TinyLlama는 크기가 작기 때문에 온디바이스 처리가 필요한 모바일 앱에 통합하는 데 적합합니다. 여기에는 언어 번역 앱, 개인 비서 기능, 스마트폰에서 효율적으로 작동할 수 있는 챗봇이 포함됩니다.

IoT 장치의 내장형 시스템: 사물 인터넷(IoT) 분야에서는 컴퓨팅 리소스가 제한되는 경우가 많습니다. TinyLlama는 스마트 홈 비서, 웨어러블 기술 및 기타 연결된 장비와 같은 다양한 장비에 지능형 언어 처리 기능을 추가하는 데 사용할 수 있습니다.

엣지 컴퓨팅: 중앙 집중식 클라우드 환경이 아닌 소스에 더 가까운 곳에서 데이터를 처리하는 이점을 얻는 애플리케이션의 경우 TinyLlama를 효과적으로 사용할 수 있습니다. 여기에는 자동차 시스템, 제조 장비 및 기타 엣지 장치의 실시간 언어 처리가 포함됩니다.

저자원 언어 연구: TinyLlama는 크기가 작고 계산 요구 사항이 낮기 때문에 언어 연구, 특히 대규모 모델 교육이 불가능한 리소스가 부족한 언어의 경우 귀중한 도구가 될 수 있습니다.

교육 도구: 교육 환경, 특히 고급 컴퓨팅 리소스에 대한 액세스가 제한된 환경에서 TinyLlama는 언어 학습 앱, 대화형 교육 도구 및 기타 학습 보조 도구를 개발하는 데 사용할 수 있습니다.

중소기업을 위한 콘텐츠 생성: 리소스가 제한된 소규모 기업에서는 광범위한 컴퓨팅 성능 없이도 TinyLlama를 사용하여 제품 설명, 마케팅 카피, 고객 서신과 같은 콘텐츠를 생성할 수 있습니다.

프로토타입 제작 및 실험: 언어 모델을 실험하고 싶지만 고성능 컴퓨팅 리소스에 대한 액세스가 부족한 개발자와 연구원은 TinyLlama를 사용하여 새로운 NLP 애플리케이션의 프로토타입을 만들고 개발할 수 있습니다.

효율적인 데이터 분석: TinyLlama는 고객 피드백, 설문 조사 응답 또는 소셜 미디어 상호 작용 분석과 같이 빠르고 효율적인 처리가 필요한 시나리오에서 텍스트 분석 및 데이터 추출에 사용할 수 있습니다.

결론

TinyLlama 1.1B는 AI 및 자연어 처리 분야의 발전을 보여주는 증거입니다. 보다 효율적이고 작고 빠른 추론 언어 모델을 생성하려면 개발 및 광범위한 가용성이 필수적입니다. TinyLlama 1.1B는 더 작은 매개변수 공간과 강력한 성능의 균형을 유지함으로써 다양한 애플리케이션을 위한 강력하고 실용적인 모델에 대한 중요한 요구 사항을 해결합니다. 인간과 같은 방식으로 언어를 이해하고 생성하는 능력과 다양한 컴퓨팅 환경에 충분히 가벼움은 컴퓨터에서 대규모 언어 모델을 실행하는 데 어려움을 겪는 사람들에게 적합한 선택입니다. 모델은 데이터 세트에서 쉽게 미세 조정될 수 있으며 제한된 컴퓨팅 리소스로 학습될 수 있습니다. 

이 기사의 주요 내용은 다음과 같습니다.

  • 효율성을 위해 설계된 TinyLlama 1.1B는 계산 리소스가 제한된 사용자를 포함하여 더 많은 사용자가 사용할 수 있으므로 여러 응용 프로그램에 적합합니다.
  • 이 모델은 3개의 A90-16G GPU를 사용하여 100일 동안 40조 개의 토큰에 대한 훈련을 포함하여 광범위한 훈련 프로세스를 거쳤습니다.
  • TinyLlama 1.1B는 작은 크기에도 불구하고 다양한 언어로 상황에 맞는 고품질 응답을 제공하므로 고려해야 할 모델입니다.
  • 모바일 애플리케이션, IoT 장비, 교육 도구 등에 적합한 선택이며, 컴팩트한 크기와 효율성으로 광범위한 애플리케이션에 사용할 수 있습니다.
  • 계산 요구 사항이 낮기 때문에 언어 연구, 특히 자원이 부족한 언어에 대한 귀중한 도구입니다.
  • 이 모델은 주로 계산 능력이 제한된 환경에서 언어 모델을 실험하거나 새로운 NLP 앱을 개발하는 사람들에게 좋은 선택입니다.

자주 묻는 질문

Q1. TinyLlama 1.1B란 무엇입니까?

A. TinyLlama 1.1B는 1.1억 개의 매개변수를 갖춘 작고 효율적인 대규모 언어 모델로, 3조 개의 토큰으로 훈련되었으며, 계산 리소스가 제한된 애플리케이션에 적합합니다.

Q2. TinyLlama 1.1B는 어떻게 훈련되었나요?

A. Slimpajama 및 Starcoderdata를 포함한 데이터세트에서 90개의 A16-100G GPU를 사용하여 40일 동안 자연어 대 코드 비율을 7:3으로 훈련했습니다.

Q3. TinyLlama 1.1B의 성능 벤치마크는 무엇입니까?

A. TinyLlama 1.1B는 HellaSwag, MMLU 및 WinoGrande와 같은 벤치마크에서 평균 52.99점을 획득하여 복잡한 언어 작업을 처리하는 기술을 보여줍니다.

Q4. TinyLlama 1.1B의 잠재적인 사용 사례는 무엇입니까?

A. 크기와 속도가 중요한 문제인 애플리케이션에 적합합니다. 여기에는 모바일 앱, 홈 자동화 장치와 같은 IoT 장비, 중소기업을 위한 콘텐츠 생성, 효율적인 데이터 분석이 포함됩니다.

Q5. TinyLlama 1.1B는 리소스가 제한된 개발자에게 적합합니까?

A. 물론 새로운 NLP 애플리케이션의 프로토타이핑 및 개발을 위한 고성능 컴퓨팅 리소스에 대한 액세스가 부족한 개발자와 연구원에게는 완벽한 선택입니다. TinyLlama 모델은 Raspberry Pi 시스템에서도 실행할 수 있습니다.

Q6. TinyLlama 1.1B는 수학적 추론 작업에서 어떻게 수행됩니까?

A. 다양한 언어 작업에서는 뛰어난 성능을 발휘하지만 수학적 추론에는 한계가 있으며 관련 데이터 세트를 미세 조정하면 개선될 수 있습니다.

이 기사에 표시된 미디어는 Analytics Vidhya의 소유가 아니며 작성자의 재량에 따라 사용됩니다.

타임 스탬프 :

더보기 분석 Vidhya