Xlera8

Flask로 Llama3에 액세스하는 방법은 무엇입니까?

개요

Llama3의 출시로 AI의 세계가 훨씬 더 흥미진진해졌습니다! Meta가 만든 이 강력한 오픈 소스 언어 모델은 상황을 뒤흔들고 있습니다. 3B 및 8B 사전 훈련 및 명령 조정 변형으로 제공되는 Llama70은 다양한 애플리케이션을 제공합니다. 이 가이드에서는 Llama3의 기능과 다음을 통해 Llama3에 액세스하는 방법을 살펴보겠습니다. 플라스크, Generative AI를 혁신할 수 있는 잠재력에 중점을 두고 있습니다.

학습 목표

  • Llama3의 아키텍처와 훈련 방법론을 탐색하고 혁신적인 사전 훈련 데이터를 찾아보세요. 미세 조정 탁월한 성능을 이해하는 데 필수적인 기술입니다.
  • Flask를 통해 Llama3을 직접 구현하고 변환기를 사용하여 텍스트 생성 기술을 익히는 동시에 안전 테스트 및 조정의 중요한 측면에 대한 통찰력을 얻으세요.
  • 향상된 정확성, 적응성, 강력한 확장성을 포함하여 Llama3의 인상적인 기능을 분석하는 동시에 책임감 있는 사용 및 개발에 중요한 한계와 잠재적 위험도 인식합니다.
  • Llama3의 실제 사례와 사용 사례를 살펴보고 다양한 애플리케이션과 시나리오에서 LlamaXNUMX의 성능을 효과적으로 활용하여 Generative AI 영역에서 잠재력을 최대한 활용하세요.

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

차례

Llama3 아키텍처 및 교육

라마3 최적화된 변환기 아키텍처를 활용하는 자동 회귀 언어 모델입니다. 예, 일반 변압기이지만 접근 방식이 업그레이드되었습니다. 조정된 버전은 SFT(지도 미세 조정) 및 RLHF(인간 피드백을 통한 강화 학습)를 사용하여 유용성과 안전성에 대한 인간 선호도에 맞춰 조정됩니다. 이 모델은 공개적으로 사용 가능한 소스의 15조 개 이상의 토큰으로 구성된 광범위한 데이터 모음에서 사전 훈련되었으며, 2023B 모델의 경우 각각 8년 2023월, 70B 모델의 경우 10년 XNUMX월이 마감되었습니다. 미세 조정 데이터에는 공개적으로 사용 가능한 명령 데이터 세트와 사람이 주석을 추가한 천만 개가 넘는 예제가 포함되어 있습니다.

플라스크가 포함된 Llama3

Llama3의 인상적인 기능

이전에 언급했듯이 Llama3은 최적화된 변압기 설계를 갖추고 있으며 사전 훈련된 버전과 명령 조정된 버전 모두에서 8B 및 70B 매개변수의 두 가지 크기로 제공됩니다. 모델의 토크나이저에는 128K 토큰 어휘가 있습니다. 모델을 훈련하는 데 8,192개의 토큰 시퀀스가 ​​사용되었습니다. Llama3는 다음과 같은 놀라운 능력을 입증했습니다.

  • 향상된 정확도: Llama3는 다양한 자연어 처리 작업에서 향상된 성능을 보여주었습니다.
  • 적응성: 다양한 상황과 작업에 적응할 수 있는 모델의 능력으로 인해 광범위한 응용 분야에 이상적인 선택이 됩니다.
  • 강력한 확장성: Llama3의 확장성을 통해 대용량 데이터와 복잡한 작업을 쉽게 처리할 수 있습니다.
  • 코딩 기능: Llama3의 코딩 기능은 초당 250개 이상의 토큰을 처리할 수 있어 놀랄 만큼 뛰어납니다. 골든 GPU 대신 LPU의 효율성은 타의 추종을 불허하므로 대규모 언어 모델을 실행하는 데 탁월한 선택입니다.

Llama3의 가장 중요한 장점은 오픈 소스 및 무료 특성으로 개발자가 비용을 들이지 않고도 액세스할 수 있다는 것입니다.

플라스크가 있는 라마3

Llama3 변형 및 기능

앞서 언급했듯이 Llama3는 두 가지 주요 변형을 제공하며 각각은 8B와 70B의 두 가지 크기로 다양한 사용 사례에 적합합니다.

  • 선행 학습된 모델: 자연어 생성 작업에 적합합니다. 성능이 좀 더 일반적입니다.
  • 지침에 맞춰 조정된 모델: 대화 사용 사례에 최적화되어 업계 벤치마크에서 많은 오픈 소스 채팅 모델보다 뛰어난 성능을 발휘합니다.

Llama3 훈련 데이터 및 벤치마크

Llama3는 15B 모델의 경우 2023년 8월, 2023B 모델의 경우 70년 10월을 기준으로 공개적으로 사용 가능한 XNUMX조 개 이상의 토큰으로 구성된 광범위한 코퍼스에 대해 사전 교육을 받았습니다. 미세 조정 데이터에는 공개적으로 사용 가능한 명령 데이터 세트와 사람이 주석을 추가한 천만 개가 넘는 예제가 포함되어 있습니다(그렇게 들었습니다!). 이 모델은 MMLU, AGIEval English, CommonSenseQA 등을 포함한 표준 자동 벤치마크에서 인상적인 결과를 얻었습니다.

라마3

Llama3 사용 사례 및 예

라마는 다른 것처럼 사용할 수 있습니다 라마 가족 사용이 매우 쉬워진 모델입니다. 기본적으로 변압기를 설치하고 가속해야 합니다. 이 섹션에서는 래퍼 스크립트를 볼 수 있습니다. GPU로 실행할 전체 코드 조각과 노트북을 찾을 수 있습니다. 여기를 클릭해 문의해주세요. 모델의 동작을 테스트하기 위해 노트북, 플라스크 앱, 대화형 모드 스크립트를 추가했습니다. 다음은 파이프라인과 함께 Llama3을 사용하는 예입니다.

Flask로 Llama3에 액세스하는 방법은 무엇입니까?

이제 Flask를 사용하여 Llama3에 액세스하는 단계를 살펴보겠습니다.

1단계: Python 환경 설정

가상 환경을 만듭니다(선택 사항이지만 권장됨).

$ python -m venv env
$ source env/bin/activate   # On Windows use `.envScriptsactivate`

필요한 패키지를 설치합니다:

Transformer를 설치하고 가속을 해보지만 Llama3는 최신 버전이므로 Git Hub에서 직접 설치하여 진행합니다.

(env) $ pip install -q git+https://github.com/huggingface/transformers.git
(env) $ pip install -q flask transformers torch accelerate # datasets peft bitsandbytes

2단계: 기본 애플리케이션 파일 준비

main.py라는 새 Python 파일을 만듭니다. 그 안에 다음 코드를 붙여넣으세요.

from flask import Flask, request, jsonify
import transformers
import torch

app = Flask(__name__)

# Initialize the model and pipeline outside of the function to avoid unnecessary reloading
model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
pipeline = transformers.pipeline(
    "text-generation",
    model=model_id,
    model_kwargs={"torch_dtype": torch.bfloat16},
    device_map="auto",
)


@app.route('/generate', methods=['POST'])
def generate():
    data = request.get_json()
    user_message = data.get('message')

    if not user_message:
        return jsonify({'error': 'No message provided.'}), 400

    # Create system message
    messages = [{"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"}]

    # Add user message
    messages.append({"role": "user", "content": user_message})

    prompt = pipeline.tokenizer.apply_chat_template(
        messages,
        tokenize=False,
        add_generation_prompt=True
    )

    terminators = [
        pipeline.tokenizer.eos_token_id,
        pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
    ]

    outputs = pipeline(
        prompt,
        max_new_tokens=256,
        eos_token_id=terminators,
        do_sample=True,
        temperature=0.6,
        top_p=0.9,
    )

    generated_text = outputs[0]['generated_text'][len(prompt):].strip()
    response = {
        'message': generated_text
    }

    return jsonify(response), 200


if __name__ == '__main__':
    app.run(debug=True)

위의 코드는 단일 경로로 Flask 웹 서버를 초기화합니다. /생성하다, 사용자 메시지를 수신 및 처리하고 AI 생성 응답을 반환하는 일을 담당합니다.

3단계: Flask 애플리케이션 실행

다음 명령을 실행하여 Flask 앱을 ​​실행합니다.

(env) $ export FLASK_APP=main.py
(env) $ flask run --port=5000

이제 Flask 앱이 실행 중이어야 합니다. http://localhost:5000. Postman 또는 CURL과 같은 도구를 통해 API를 테스트하거나 간단한 HTML 프런트엔드 페이지를 작성할 수도 있습니다.

Transformers AutoModelForCausalLM을 사용한 대화형 모드

Jupyter Notebook 내에서 모델을 대화형으로 쿼리하려면 이를 셀에 붙여넣고 다음을 실행하세요.

import requests
import sys
sys.path.insert(0,'..')
import torch

from transformers import AutoTokenizer, AutoModelForCausalLM

MODEL_NAME ='meta-llama/Meta-Llama-3-8B-Instruct'

class InteractivePirateChatbot:
    def __init__(self):
        self._tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, padding_side='left')
        self._tokenizer.pad_token = self._tokenizer.eos_token
        self._model = AutoModelForCausalLM.from_pretrained(MODEL_NAME, torch_dtype=torch.bfloat16, device_map="auto", offload_buffers=True)
        
    def _prepare_inputs(self, messages):
        try:
            inputs = self._tokenizer([message['content'] for message in messages], padding='longest', truncation=True, max_length=512, return_tensors='pt')
            input_ids = inputs.input_ids.to(self._model.device)
            attention_mask = inputs.attention_mask.to(self._model.device)
            return {'input_ids': input_ids, 'attention_mask': attention_mask}
        except Exception as e:
            print(f"Error preparing inputs: {e}")
            return None

    def ask(self, question):
        try:
            messages = [
                {"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"},
                {"role": "user", "content": question}
            ]

            prepared_data = self._prepare_inputs(messages)
            if prepared_data is None:
                print("Error preparing inputs. Skipping...")
                return

            output = self._model.generate(**prepared_data, max_length=512, num_beams=5, early_stopping=True)

            answer = self._tokenizer.decode(output[0], skip_special_tokens=True)
            print("Pirate:", answer)
        except Exception as e:
            print(f"Error generating response: {e}")

generator = InteractivePirateChatbot()
while True:
    question = input("User: ")
    generator.ask(question)

위의 코드를 사용하면 모델이 어떻게 작동하는지 빠르게 상호작용하고 확인할 수 있습니다. 전체 코드 찾기 여기에서 지금 확인해 보세요..

User: "Who are you?"

Pirate: "Arrrr, me hearty! Me name be Captain Chat, the scurviest pirate chatbot to ever sail the Seven Seas! I be here to swab yer decks with me clever responses and me trusty parrot, Polly, perched on me shoulder. So hoist the colors, me matey, and let's set sail fer a swashbucklin' good time!"

모델이 어떻게 작동하는지 살펴봤으니 몇 가지 안전 및 책임 가이드를 살펴보겠습니다.

책임과 안전

Meta는 안전 모범 사례 구현, Meta Llama Guard 2 및 Code Shield 보호 장치와 같은 리소스 제공, 책임 있는 사용 가이드 업데이트 등 책임감 있는 AI 개발을 보장하기 위한 일련의 조치를 취했습니다. 개발자는 특정 사용 사례와 대상에 대한 조정의 이점과 유용성을 평가하면서 필요에 따라 이러한 보호 장치를 조정하고 배포하는 것이 좋습니다. 이러한 모든 링크는 Llama3용 Hugginface 저장소에서 사용할 수 있습니다.

윤리적 고려 사항 및 제한 사항

Llama3는 강력한 도구이기는 하지만 그 한계와 잠재적인 위험을 인식하는 것이 중요합니다. 모델은 사용자 프롬프트에 대해 부정확하거나 편향되거나 불쾌한 응답을 생성할 수 있습니다. 따라서 개발자는 모델의 특정 애플리케이션에 맞게 안전 테스트 및 조정을 수행해야 합니다. Meta는 Purple Llama 솔루션을 워크플로, 특히 모델 수준 안전 위에 시스템 수준 안전을 계층화하기 위해 입력 및 출력 프롬프트를 필터링하는 기본 모델을 제공하는 Llama Guard를 통합할 것을 권장합니다.

결론

Meta는 Meta가 제작한 강력한 오픈 소스 언어 모델인 Llama3를 도입하여 인공 지능의 지형을 재편했습니다. 8B 및 70B 사전 훈련 및 교육 조정 버전 모두에서 사용할 수 있는 Llama3는 다양한 혁신 가능성을 제시합니다. 이 가이드에서는 Llama3의 기능과 Flask를 사용하여 Llama3에 액세스하는 방법에 대한 심층적인 탐색을 제공하여 Generative AI를 재정의할 수 있는 잠재력을 강조했습니다.

주요 요점

  • Meta는 3B 및 8B 사전 훈련 버전과 명령 조정 버전 모두에서 사용할 수 있는 강력한 오픈 소스 언어 모델인 Llama70을 개발했습니다.
  • Llama3는 향상된 정확성, 적응성, 강력한 확장성을 포함한 인상적인 기능을 입증했습니다.
  • 이 모델은 오픈 소스이며 완전 무료이므로 개발자와 저예산 연구자가 액세스할 수 있습니다.
  • 사용자는 파이프라인 추상화 또는 generate() 함수가 있는 자동 클래스를 활용하여 변환기와 함께 Llama3을 활용할 수 있습니다.
  • Llama3 및 Flask를 사용하면 개발자는 Generative AI의 새로운 지평을 탐색하여 챗봇 및 콘텐츠 생성과 같은 혁신적인 솔루션을 육성하고 인간-기계 상호 작용의 경계를 넓힐 수 있습니다.

자주 묻는 질문

Q1. 라마3란 무엇인가요?

A. Meta는 3B 및 8B 사전 훈련 버전과 명령 조정 버전 모두에서 사용할 수 있는 강력한 오픈 소스 언어 모델인 Llama70을 개발했습니다.

Q2. Llama3의 주요 기능은 무엇인가요?

A. Llama3는 향상된 정확성, 적응성, 강력한 확장성을 포함하여 인상적인 기능을 보여주었습니다. 연구와 테스트에 따르면 보다 관련성이 높고 상황을 인식하는 응답을 제공하여 각 솔루션이 사용자의 요구 사항에 맞게 정밀하게 조정되는 것으로 나타났습니다.

Q3. Llama3은 오픈 소스이고 무료입니다. Llama3를 상업적 목적으로 사용할 수 있나요?

A. 예, Llama3는 오픈 소스이며 완전 무료이므로 개발자가 큰 비용을 들이지 않고도 액세스할 수 있습니다. Llama3는 오픈 소스이며 상업적 목적으로 무료로 사용할 수 있습니다. 그러나 해당 규정을 준수하는지 확인하려면 라이선스 이용 약관을 검토하는 것이 좋습니다.

Q4. 특정 사용 사례에 맞게 Llama3를 미세 조정할 수 있나요?

A. 예, Llama3는 하이퍼파라미터와 훈련 데이터를 조정하여 특정 사용 사례에 맞게 미세 조정할 수 있습니다. 이는 특정 작업 및 데이터 세트에서 모델의 성능을 향상시키는 데 도움이 될 수 있습니다.

Q5. Llama3는 BERT 및 RoBERTa와 같은 다른 언어 모델과 어떻게 비교됩니까?

A. 더 큰 데이터세트로 훈련된 고급 언어 모델인 Llama3은 다양한 자연어 처리 작업에서 BERT 및 RoBERTa보다 성능이 뛰어납니다.

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

우리와 함께 채팅

안녕하세요! 어떻게 도와 드릴까요?