Meta가 최근 Llama 3.2라는 최신 대규모 언어 모델(LLM) 컬렉션을 공개했습니다. 이는 AI 기술의 중요한 발전을 보여주는 사건입니다. 이번 신규 출시는 이전 버전들에 비해 여러 혁신적인 기능과 개선사항을 선보입니다.

 

Llama 3.2의 주요 특징

  1. 다중 모달 기능: Meta는 Llama 시리즈에서 처음으로 비전 모델을 도입했습니다. Llama 3.2 11B Vision과 90B Vision 모델은 텍스트와 이미지 입력을 모두 처리할 수 있어 고급 시각적 추론 작업이 가능합니다.
  2. 경량 모델: Llama 3.2는 1B와 3B 파라미터 모델을 포함하며, 이는 Meta의 첫 소형 언어 모델(SLM)입니다. 이 모델들은 기기 내 및 엣지 컴퓨팅용으로 설계되어 로컬 추론과 저비용 에이전트 애플리케이션을 가능하게 합니다.
  3. 다국어 지원: 이 모델들은 다국어 대화 사용 사례에 최적화되어 있으며, 공식적으로 영어, 독일어, 프랑스어, 이탈리아어, 포르투갈어, 힌디어, 스페인어, 태국어를 지원합니다.
  4. 성능 향상: Llama 3.2 모델은 일반적인 산업 벤치마크에서 많은 오픈소스 및 비공개 채팅 모델들을 능가하는 성능을 보여줍니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

응용 분야 및 사용 사례

  • 기업 수준 애플리케이션: 90B Vision 모델은 일반 지식, 장문 텍스트 생성, 다국어 번역, 코딩, 수학, 고급 추론 분야에서 뛰어납니다.
  • 콘텐츠 생성 및 AI 어시스턴트: 11B Vision 모델은 콘텐츠 생성, 대화형 AI, 언어 이해 작업에 적합합니다.
  • 엣지 컴퓨팅: 1B와 3B 모델은 개인 정보 관리, 다국어 지식 검색, 모바일 애플리케이션에 이상적입니다.
  • 시각적 작업: 비전 모델은 이미지 캡셔닝, 시각적 질문 답변, 문서 처리, 멀티모달 챗봇 기능을 수행할 수 있습니다.

기술 사양

  • 아키텍처: Llama 3.2는 자동 회귀 언어 모델링을 위한 최적화된 트랜스포머 아키텍처를 사용합니다.
  • 훈련 기법: 모델들은 지도 학습 미세 조정(SFT)과 인간 피드백을 통한 강화 학습(RLHF)을 사용합니다.
  • 컨텍스트 길이: 최대 128k 토큰.
  • 토큰 수: 최대 9T 토큰.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

가용성 및 배포

Llama 3.2 모델은 현재 다양한 플랫폼에서 사용 가능합니다:

 

  • Amazon Bedrock 및 AWS 서비스
  • Microsoft Azure AI 모델 카탈로그
  • IBM의 watsonx.ai 플랫폼
  • 로컬 배포를 위한 Ollama

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

AI 생태계에 미치는 영향

Llama 3.2의 출시는 오픈소스 AI 모델 분야에서 중요한 진전을 나타냅니다. 다중 모달 기능과 경량 버전은 기업 애플리케이션부터 모바일 및 엣지 컴퓨팅에 이르기까지 다양한 분야에서 혁신을 이끌 것으로 예상됩니다.

 

특히 에이전트 AI 작업에서 뛰어난 성능을 보이는 이 모델들은 시장의 다른 주요 AI 모델들과 강력한 경쟁자로 자리매김할 것으로 보입니다.AI 분야가 빠르게 발전함에 따라, Llama 3.2의 개방성과 유연성은 개발자와 연구자들에게 새로운 기회를 제공하며, 이는 잠재적으로 새로운 AI 기반 애플리케이션과 서비스의 물결을 일으킬 수 있을 것입니다.

 

 

아래는 LM Studio에서 LLAMA3.2 기반 앱을 실행하는 영상과 소스코드입니다 :

 

 

 

 

1. Base Code

# Example: reuse your existing OpenAI setup
from openai import OpenAI

# Point to the local server
client = OpenAI(base_url="http://<Your IP>:5555/v1", api_key="lm-studio")


completion = client.chat.completions.create(
  model="lmstudio-community/Llama-3.2-3B-Instruct-GGUF",
  messages=[
    {"role": "system", "content": "Always answer in rhymes."},
    {"role": "user", "content": "Introduce yourself."}
  ],
  temperature=0.7,
)

print(completion.choices[0].message)

 

 

2. Streamlit 앱 코드 (Stream 응답 방식)

 

import streamlit as st
from openai import OpenAI

# OpenAI 클라이언트 설정
@st.cache_resource
def get_openai_client():
    return OpenAI(base_url="http://<Your IP>:5555/v1", api_key="lm-studio")

client = get_openai_client()

st.title("LM Studio 채팅 앱")

# 세션 상태 초기화
if "messages" not in st.session_state:
    st.session_state.messages = [
        {"role": "system", "content": "You are helpful instance."}
    ]

# 채팅 메시지를 표시할 컨테이너
chat_container = st.container()

# 입력 필드를 화면 하단에 고정
input_container = st.container()

# 대화 내용 표시
with chat_container:
    for message in st.session_state.messages:
        if message["role"] != "system":
            with st.chat_message(message["role"]):
                st.write(message["content"])

# 사용자 입력 (화면 하단에 위치)
with input_container:
    user_input = st.text_input("메시지를 입력하세요:", key="user_input")
    send_button = st.button("전송")

if send_button and user_input:
    # 사용자 메시지 추가
    st.session_state.messages.append({"role": "user", "content": user_input})
    
    with chat_container:
        with st.chat_message("user"):
            st.write(user_input)
        
        with st.chat_message("assistant"):
            message_placeholder = st.empty()
            full_response = ""
            
            # 스트리밍 응답
            for response in client.chat.completions.create(
                model="lmstudio-community/Llama-3.2-3B-Instruct-GGUF",
                messages=st.session_state.messages,
                temperature=0.7,
                stream=True
            ):
                full_response += (response.choices[0].delta.content or "")
                message_placeholder.markdown(full_response + "▌")
            
            message_placeholder.markdown(full_response)
    
    # 최종 응답 메시지 추가
    st.session_state.messages.append({"role": "assistant", "content": full_response})
    
    # 입력 필드 초기화 (st.session_state 사용하지 않음)
    st.rerun()

# 스크롤을 항상 최하단으로 이동
st.markdown('<script>window.scrollTo(0, document.body.scrollHeight);</script>', unsafe_allow_html=True)

 

+ Recent posts