Llama(라마) 3.1 405B 사양 걱정 없이 무료로 사용하는 법 | 파이썬 챗봇 만들기

메타 라마 3.1 405B 모델 소개 및 무료 요금제

모델 소개

https://ai.meta.com/blog/meta-llama-3-1/

Meta Llama 3.1 405B는 다국어 대화에 최적화되어 있으며, 폐쇄형 채팅 모델보다 훨씬 뛰어난 성능으로 유명합니다. 이 모델은 공개적으로 사용 가능한 데이터 소스 약 15조 토큰의 데이터로 학습되었으며, 2023년 12월까지의 비교적 최신 데이터까지 학습되었습니다.

 

 

GitHub Playground API 요금

깃허브 playground API요금
https://docs.github.com/en/github-models/prototyping-with-ai-models#rate-limits

요금제는 포스팅 게시 시점에서 변경될 수 있으니 GitHub의 공식 문서에서 최신 요금제를 확인하시는 것이 좋습니다.

Llama 3.1 405B는 High 요금제를 따르고 있습니다. 일반적으로 무료로 사용 시에는 불편함을 느끼지 못하지만, 무료 사용 한도 이상으로 사용하고 싶다면 Azure 계정을 통해 API 사용량을 추가로 확장할 수 있습니다. Azure 요금제를 추가로 결제한다면 GitHub 토큰 대신에 Azure 계정으로 인증하여 사용할 수 있습니다.

오늘은 기본적으로 무료로 해당 모델을 사용해보고 파이썬으로 대화형 채팅 프로그램을 구축해보겠습니다.

 

 

메타 라마 3.1 405B 모델 무료로 사용하기

playground 신청하기

GitHub 마켓플레이스에서 모델을 살펴보면 Meta Llama의 다양한 모델들이 등록되어 있습니다. GitHub 계정만 있으면 등록된 모델을 Playground에서 무료로 사용해볼 수 있습니다.

깃허브 마켓플레이스 다양한 모델
https://github.com/marketplace/models

로컬에서 돌아가는 것이 아니기 때문에 컴퓨터 사양과 전혀 상관없이 어느 환경에서도 돌려볼 수 있습니다.

 

 

깃허브 마켓플레이스

GitHub 계정을 새로 만들거나 기존의 계정으로 로그인한 다음, GitHub 마켓플레이스 좌측 상단에 Get early access to our playground for models를 클릭하여 마켓플레이스 이용 권한을 신청하면 됩니다.

 

 

네이버메일 깃허브

신청 과정이나 기준이 복잡한 것은 아니며, 신청 후 기다리면 이메일로 신청이 승인되었다는 메일이 오게 됩니다. 저는 신청하고 1주일이 조금 안 되게 승인 메일을 받았습니다.

 

 

Meta-Llama 3.1 405B 모델로 채팅하기 - 사양 걱정 없이

Meta-Llama3.1 405B - Instruct 모델 소개

GitHub Playground 권한을 승인받았다면 마켓플레이스에서 405B 모델을 선택하면 바로 이용해볼 수 있습니다. 우측 상단에 Playground를 클릭하여 바로 온라인에서 무료로 이용해볼 수 있습니다.

 

 

깃허브 Llama 3.1 405B

Playground에서 Meta Llama 3.1을 무료로 사용할 수 있습니다. 로컬 PC에서 실행하는 것이 아니기 때문에 컴퓨터 사양의 걱정도 없이 부담 없이 고급 모델을 사용할 수 있습니다. 한글로 대화를 요청해보았는데 한글 응답도 훌륭하게 대답합니다.

응답을 하다 보면 한글이 일부 깨지는 현상이 있는데, 이 부분은 출력에서 처리 가능해 보였습니다.

 

 

Llama 3.1 405B 온라인 대화

응답을 하다보면 한글이 일부 깨지는 현상이 있는데 이부분은 출력에서 처리가능해 보였습니다.

 

 

Meta-Llama3.1 405B 온라인에서 사용하기

AI에게 사전에 간단한 페르소나를 부여하여 프롬프트를 입력 후 대화를 시도해봤는데, 온라인 응답 속도도 평균 3~4초로 나쁘지 않았고, 한국어 응답의 질도 좋았습니다. 세부적인 모델 파라미터 설정도 가능하기 때문에 GPT 대신에 서비스에 사용하기에도 괜찮아 보였습니다.

 

 

Meta-Llama 3.1 405B 파이썬 챗봇 만들기

파이썬 코드 확인하기

Llama3.1 405B 파이썬 코드

Meta-Llama를 사용해보니 간단한 챗봇으로 만들어보는 것도 재미있어 보여서 바로 시도해보았습니다.

 

채팅창에서 상단 Code 탭을 클릭하면 프로그래밍에서도 사용 가능하게끔 API를 지원하고 있습니다. API를 사용하면 로컬 PC의 사양과 전혀 상관없이 무거운 모델을 돌릴 수 있는데, 자세한 내용은 아래에서 말씀드리겠습니다.

 

Python 언어를 사용하여 만들어볼 것이기 때문에 언어는 Python을 선택하여 파이썬 코드를 불러옵니다. 이제 이 코드를 전부 복사하여 VSCode옮겨보겠습니다.

 

 

Llama3.1 파이썬 코드

코드를 살펴보면 Azure 클라우드 모델을 호출하는 코드가 있습니다.

 

해당 코드는 로컬에 Llama모델을 직접 다운로드하여 사용하는 것이 아니라, 클라우드 기반의 API를 통해 원격 서버에 호스팅된 모델에 접근하여 사용하는 방식입니다. GPT API와 비슷한 원리입니다. 우리가 사용하려는 Meta-Llama 3.1 405B는 Azure의 서버에 호스팅되어 이용할 수 있습니다.

 

 

필수 패키지 설치

코드 상단에 주석으로 알 수 있듯이 코드를 작동시키기 위해서는 필요한 패키지를 설치해야 합니다.

아래 명령어를 터미널에 입력하여 필요한 패키지를 설치합니다.

pip install azure-ai-inference  #azure 클라우드 접근 패키지
pip install python-dotenv #.env 패키지

 

 

Github 개인용 토큰 발급받기

깃허브 개인용코드

내가 사용하는 모델의 서버에 아무나 접근하면 안 되기 때문에 인증용 토큰이 필요합니다.

 

 

깃허브 Tokens 발급받기

GitHub Tokens 발급 페이지에서 Generate new token (classic)을 선택합니다.

 

 

깃허브 aceess token발급하기

토큰의 이름과 만료일을 설정한 후 아래 체크박스는 체크할 필요 없이 토큰을 생성합니다.

생성된 토큰은 복사하여 안전한 곳에 보관합니다.

 

 

from dotenv import load_dotenv
load_dotenv()
token = os.getenv('token')
 #코드 상단...



client = ChatCompletionsClient(
    endpoint="https://models.inference.ai.azure.com",
    credential=AzureKeyCredential(token),
)

생성한 토큰을 .env 파일에 token = your_token_key 형태로 등록하고, 코드에서 별도로 등록하여 사용할 수 있도록 파이썬 코드를 수정합니다.

 

 

Llama3.1 405B 한국어로 대화해보기

response = client.complete(
    messages=[
        SystemMessage(content=""""""),
        UserMessage(content="안녕? 한국어로 대화하자"),
    ],
    model="Meta-Llama-3.1-405B-Instruct",
    temperature=0.8,
    max_tokens=4096,
    top_p=0.1
)

코드는 GPT API와 비슷한 형태로 이루어져 있는데, 사용자의 질문에 해당하는 UserMessage변수에 AI에게 전달한 첫 프롬포트를 지정하였습니다.

 

 

Llama3.1 405B 파이썬에서 사용

파이썬을 실행하면 설정한 UserMessage가 AI에게 전달되고 AI의 응답이 담긴 response가 반환됩니다.

 

 

지속적인 대화를 위한 코드 수정

Llama3.1 405B 파이썬 채팅

대화의 응답을 받은 후 끝나는 것이 아니라 사용자가 원하는 만큼 대화를 할 수 있도록 while문을 사용하여 반복 시켰습니다.

while(1):
    Ucontent = input('user: ')
    response = client.complete(
        messages=[
            SystemMessage(content=""""""),
            UserMessage(content=Ucontent),
        ],
        model="Meta-Llama-3.1-405B-Instruct",
        temperature=0.8,
        max_tokens=4096,
        top_p=0.1
    )

    print(response.choices[0].message.content)

 

 

문제점

Llama3.1 405B 한글채팅

지속적인 대화는 가능했지만 AI 응답이 자꾸 영어로 나오는 현상이 있었습니다. 한국어로 대답해달라고 요청해도 영어 응답이 나와서 초기에 사용자와 시스템의 메시지를 강제로 지정해두고 대화해보도록 시도해봤습니다. 

 

 

한국어 응답 최적화

아래는 수정된 코드입니다.

Ucontent = "당신은 AI비서입니다. 항상 반드시 영어가 아닌 한국어로만 응답을 하세요. 대답은 너무 길게 답변하지 마세요"
while(1):

    response = client.complete(
        messages=[
            SystemMessage(content="""안녕하세요! AI 비서입니다."""),
            UserMessage(content=Ucontent),
        ],
        model="Meta-Llama-3.1-405B-Instruct",
        temperature=0.8,
        max_tokens=4096,
        top_p=0.1
    )

    print(response.choices[0].message.content)
    Ucontent = input('User: ')

처음 실행시에만 Ucontent 텍스트를 AI에게 전달하고 AI는 이에 관한 시스템 메시지를 생성하여 사용자의 질문에 대한 응답을 계속 반복하도록 하였습니다.

 

 

Llama3.1 405B와 실시간채팅

그랬더니 이제는 어떤 질문을 해도 사용자가 원하는 대로 한국어로 응답을 주고받을 수 있었습니다.

답변의 퀄리티도 괜찮고 응답 속도도 준수한 편이었습니다.

 

 

총평

Llama 3.1 405B 모델을 무료로 사용할 수 있다는 점에서 이걸 무료로 제공한다는 게 정말 신기했습니다. API를 사용하여 여러 번 질문을 하다 보면 응답 속도가 10초 이상 소요되는 경우도 있었는데, 무료 요금제의 속도 제한으로 인해 발생하는 것 같았습니다. 그래도 개인 컴퓨터에서 돌려볼 수 없는 고급 모델을 사용해볼 수 있다는 점이 정말 만족스러웠으며, 405B라는 대규모 언어 모델을 사용해서 그런지 대화형 챗봇을 포함하여 여러 서비스에서 활용 가능해 보였습니다.

 

 

깃허브

혹시나 전체 코드가 궁금하신 분들을 위해서 GitHub에 Llama 3.1을 Github Marketplace에서 제공하는 코드를 기반으로 작성된 코드를 공유해드리겠습니다.

 

 

GitHub - Blue-B/Llama3.1-405B-ChatBot: python Llama3.1 405B chatbot

python Llama3.1 405B chatbot. Contribute to Blue-B/Llama3.1-405B-ChatBot development by creating an account on GitHub.

github.com

 

Top