지난 시간에는 ollama를 활용하여 경량화된 LLaMA3.2 모델(1b, 3b 등)을 로컬 머신에서 직접 실행해보는 실습을 진행하였다. NVIDIA의 GPU 시장 독점을 견제하려는 목적으로 설립된 미국 스타트업 Groq은, 자체 개발한 LPU(Language Processing Unit)를 활용해 LLaMA-70B, Gemma-2-9B 등 로컬 머신에서 실행하기 어려운 대규모 모델을 웹과 API로 제공한다. 오늘은 이를 활용해보려 한다.
위 홈페이지에 접속하면, 바로 원하는 모델을 선택하고 질문을 요청, 답변을 확인할 수 있다.
과감하게 70b 모델을 돌려봤다. 여기서 특이한 점은 오른쪽 상단에 표시되는 1197.50T/s라는 시간일 것이다. 클릭해 보면,
이렇게 방금 요청에 대해 입출력 토큰 수와 추론 시간을 확인할 수 있다. 이런 지표를 제공하는 이유는 아마도 LPU라는 자신들이 만든 프로세싱 유닛이, LLM 모델을 돌리는 데에 다른 처리 장치에 대비해 높은 성능을 보인다는 것을 어필하기 위해서인 듯 보인다. 뭐 알겠고 잘났고...
그런데 우리에게 중요한 것은 이 좋은 LPU를 우리는 마음껏 써먹을 수 있다는 점이다! 이게 언제까지 지속될지는 모르겠지만
api key를 제공하는데도 무료 플랜이 존재한다. Langchain 라이브러리와도 호환되기 때문에 간단한 딥러닝 서버를 열어 다양한 기능을 테스트할 때 유용하게 사용할 수 있을 것 같다.
API Key 발급
키를 발급받는 방법은 간단하다. 회원 가입을 한 후에 홈페이지 오른쪽 상단에 DEV CONSOLE, 왼쪽 사이드 바에서 API Keys, 그리고 Create API Key를 클릭하고 이름을 설정해 주면 손쉽게 API Key 발급이 끝난다. OpenAI API나 Gemini API와 마찬가지로, 한번 까먹으면 다시 찾을 수 없으며, 환경 변수에 저장해 두고 사용하면 보안에 문제 될 일이 없다.
API Key 환경 변수에 저장
터미널에 접속하여
vi ~/.zshrc
# zshrc 파일이 열리면, 편집 모드(i)로 변경, 환경 변수를 넣고 저장(:wq)을 한다.
# 예: export GROQ_API_KEY="이곳에 API KEY 입력"
source ~/.zshrc
그리고 주피터 노트북 환경에서 api key를 확인해 보면
import os
api_key = os.getenv["GROQ_API_KEY"]
print(api_key)
잘 될 수도 있고 안 될 수도 있다. 주피터 노트북은 별도의 커널 환경을 사용하기 때문에 반영이 안 될 수도 있기 때문이다. 이 때는 주피터 노트북파일이 있는 디렉터리에 .env 파일을 두고 환경 변수를 따로 관리해 주면 된다.
다시 터미널에서
pip install python-dotenv
라이브러리 설치 후에, 디렉터리에 .env 파일을 생성, 그리고 그 안에 환경 변수를 작성해 준다.
예시는 다음과 같다. 그리고 주피터 노트북으로 돌아와서
import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv("GROQ_API_KEY")
print(api_key)
위 코드를 실행했을 때 api_key가 잘 확인이 된다면 성공이다.
랭체인으로 간단한 응답 요청
이번에는 간단한 요청을 보내 보자. Groq 웹사이트 Dev Console에는 자체에서 제공하는 예시 코드도 확인해 볼 수 있으나, 모델 초기화 부분만 바꿔 끼우면 끝나는 Langchain으로 깨끗하게~ 맑게~ 자신 있게~ 코드를 작성하면 다음과 같다.
from langchain_groq import ChatGroq
from langchain_core.prompts import ChatPromptTemplate
# ChatGroq 모델 초기화
llm = ChatGroq(
model="llama-3.3-70b-versatile",
temperature=0.7,
max_tokens=300,
api_key=api_key
)
# 프롬프트 템플릿 정의
prompt = ChatPromptTemplate.from_messages([
("system", "당신은 친절하고 유익한 AI 전문가입니다."),
("human", "{question}")
])
# Chain 생성
chain = prompt | llm
# 질문 리스트
questions = [
"groq이 뭔가요?",
"가장 성능이 좋은 오픈 소스 LLM 모델은 뭔가요?"
]
# 각 질문에 대한 답변 생성
for question in questions:
response = chain.invoke({"question": question})
print(f"질문: {question}")
print(f"답변: {response.content}\n")
응답 결과
질문: groq이 뭔가요?
답변: Groq은 구글에서 개발한 고성능 컴퓨팅 칩입니다. 2020년에 공개되었으며, 기존의 중앙 처리 장치(CPU)와 그래픽 처리 장치(GPU)보다 더 빠르고 효율적인 컴퓨팅을 제공하는 것을 목표로 합니다.
Groq 칩은 구글의 텐서 프로세싱 유닛(TPU) 기술을 기반으로 하며, 기계 학습과 딥 러닝 작업을 위해 특별히 설계되었습니다. Groq 칩은 매우 큰 규모의 컴퓨팅 작업을 수행할 수 있으며, 특히 이미지와 비디오 처리, 자연어 처리, 추천 시스템 등과 같은 작업에서 뛰어난 성능을 발휘합니다.
Groq 칩의 주요 특징은 다음과 같습니다:
1. **고성능**: Groq 칩은 매우 빠른 컴퓨팅 성능을 제공하며, 기존의 CPU와 GPU보다 더 빠른 성능을 제공합니다.
2. **저전력**: Groq 칩은 저전력 설계로, 에너지 소모를 최소화하여 데이터 센터와 엣지 컴퓨팅 환경에서 사용하기 적합합니다.
3. **스케일링**: Groq 칩은 대규모 컴퓨팅 작업을 수행할 수 있으며, 여러 칩을 연결하여 더 큰 규모의 컴퓨팅을 수행할
질문: 가장 성능이 좋은 오픈 소스 LLM 모델은 뭔가요?
답변: 현재 가장 성능이 좋은 오픈 소스 LLM(Large Language Model) 모델은 여러 가지 요인에 따라 달라질 수 있지만, 최근에는 다음과 같은 모델들이 주목을 받고 있습니다.
1. **LLaMA**: Meta AI에서 개발한 LLaMA 모델은 최근에 공개된 오픈 소스 모델로, 다양한 크기(7B, 13B, 33B, 65B)로 제공됩니다. LLaMA는 자연어 이해, 생성, 번역 등 다양한 태스크에서 높은 성능을 보여주고 있습니다.
2. **BLOOM**: BLOOM은 빅테크(BigTech)와 연구 기관이 공동으로 개발한 모델로, 176B의 크기로 알려져 있습니다. 이 모델은 다양한 언어를 지원하며, 자연어 이해, 생성, 번역 등 다양한 태스크에서 높은 성능을 보여주고 있습니다.
3. **OPT**: OPT(Optimal Transformer) 모델은 Meta AI에서 개발한 모델로, 175B의 크기로 알려져 있습니다. 이 모델은 자연어 이해, 생성, 번역 등 다양한 태스크에서 높은 성능을 보여주고 있습니다.
4. **ERNIE**: ERNIE(Enhanced Representation through kNowledge Integration) 모델은 百度(Baidu)에서 개발한 모델로, 다양한 크기(100M, 1B, 3B
엄청나다! 어차피 무료니 인텔 맥으로는 상상도 못 할 70b 파라미터 모델을 사용해 보았다. 기존에 온디바이스로 돌려봤던 LLaMA3.2 모델과는 비교할 수도 없는 성능에, api 제공에... 꼭 ChatGPT를 사용해야 하는 것이 아니라면, 이리저리 실습해 보기에 아주 좋은 환경으로 보인다. 하지만 읽어보면 알겠지만 Hallucination이 좀 있다... ^^
'AI' 카테고리의 다른 글
[LLM] ollama + open-webui로 온디바이스 LLM Chatbot 환경 구축하기 (3) | 2025.01.06 |
---|---|
[LLM] RAG 개선하기 (3) - 바이 인코더 + 교차 인코더 (0) | 2024.11.26 |
[LLM] RAG 개선하기 (2) - 임베딩 모델 미세 조정하기 (Fine-Tuning) (0) | 2024.11.25 |
[LLM] RAG 개선하기 (1) - 언어 모델을 임베딩 모델로 만들기 (0) | 2024.11.24 |
[LLM] 임베딩 모델로 데이터 의미 압축하기 (3) - 의미, 키워드, 하이브리드 검색 (2) | 2024.11.19 |