🔟Llama3-8B with LangChain
Meta는 Llama-8B 및 70B 크기의 사전 학습 및 인스트럭션 튜닝된 LLM 제품군을 개발하여 출시했습니다. 인스트럭션 튜닝된 Llama 3 모델은 대화 사용 사례에 최적화되어 있으며 일반적인 업계 벤치마크에서 사용 가능한 많은 오픈 소스 채팅 모델보다 성능이 뛰어납니다.
Meta Llama 3란?
Meta의 Llama3는 Meta(Facebook)의 차세대 오픈소스 대규모 언어 모델(LLM)입니다. 8B와 70B 파라미터 규모의 사전학습 및 instruction-tuned 모델로 제공되며, 다양한 활용 사례를 지원할 수 있습니다.
Meta는 Llama3가 현존하는 동급 규모의 최고 오픈소스 모델이라고 자신하고 있습니다. 사전학습과 사후학습 과정의 개선을 통해 reasoning, 코드 생성, 지시 수행 등의 능력이 크게 향상되었다고 합니다.
Llama 3의 새로운점
Llama3는 이전 버전의 Llama2 대비 여러가지 개선점이 있습니다:
Tokenizer 개선: 128K 토큰의 vocabulary로 언어를 더 효율적으로 인코딩해 성능 향상
Inference 효율성 개선: 8B, 70B 모델 모두 Grouped Query Attention(GQA) 적용
대규모 사전학습 확장: 15조 토큰 이상으로 학습, 라마2 대비 7배 이상 데이터셋 증가
Instruction-tuning 혁신: SFT, Rejection Sampling, PPO, DPO 기법 활용한 정교한 모델 얼라인먼트

Llama 3의 목표
Llama3 공개에 있어 다음과 같은 목표를 가지고 있습니다:
현존 최고 수준의 독점 모델에 필적하는 최상의 오픈소스 모델 구축
개발자 피드백을 반영해 라마3의 전반적인 유용성 증대
LLM의 책임감있는 사용과 배포를 주도하는 역할 수행
개발 중인 모델을 조기에 공개해 커뮤니티의 접근성 향상
메타는 텍스트 기반 라마3 모델을 시작으로, 향후 다국어/멀티모달 지원, 컨텍스트 확장, 전반적 성능 고도화 등을 계획하고 있습니다.
Llama 3 모델 아키텍처
LLlama3는 비교적 표준적인 디코더 전용 트랜스포머 아키텍처를 채택했습니다. 주요 특징은 다음과 같습니다:
128K Token의 vocabulary로 언어를 효율적으로 인코딩
8B, 70B 모델 모두 Grouped Query Attention(GQA) 적용해 추론 효율성 개선
8,192 토큰 시퀀스로 학습,
self-attention이 문서 경계를 넘지 않도록 마스킹 처리
학습 데이터로는 공개 출처에서 수집한 15조 이상의 토큰을 활용했습니다. 30개 이상 언어의 고품질 비영어 데이터도 5% 이상 포함되어 있습니다.
품질 관리를 위해 휴리스틱/NSFW 필터링, 시맨틱 중복제거, 텍스트 분류기 등을 활용한 정교한 데이터 필터링 파이프라인을 개발 적용했습니다.
Llama 3로 개발하기
Meta는 새롭게 공개한 Llama3 모델이 최대한 유용하면서도 책임감있게 배포될 수 있도록 업계를 선도 할만한 접근 방식을 채택했습니다. 이를 위해 라마 개발과 배포에 있어 새로운 시스템 레벨의 접근법을 도입했습니다.

Llama3 모델을 개발자가 주도권을 갖는 더 큰 시스템의 일부로 생각합니다. 개발자는 Llama 모델을 기반으로 자신만의 고유한 목표에 맞는 시스템을 설계할 수 있습니다.
Instruction-tuning도 모델의 안전성 확보에 중요한 역할을 합니다. 메타의 instruction-tuned 모델은 내외부의 red teaming을 통해 안전성을 테스트 받았습니다.
Red teaming에서는 전문가와 자동화 방법을 활용해 문제가 될 만한 프롬프트를 생성하고 모델의 응답을 평가합니다. 화학, 생물학, 사이버 보안 등 다양한 분야에서의 오용 리스크를 종합적으로 평가하고, 이를 반영해 모델을 안전하게 Fine-tuning 합니다. 자세한 내용은 모델 카드에서 확인할 수 있습니다.
Llama Guard 모델은 프롬프트 및 응답 안전성을 위한 기반이 되며, 애플리케이션 필요에 따라 새로운 분류체계를 만들도록 쉽게 파인튜닝 될 수 있습니다.
Llama Guard 2는 업계 표준 수립을 지원하기 위해 최근 발표된 MLCommons 분류체계를 사용합니다.
CyberSecEval 2는 LLM의 코드 인터프리터 악용 가능성, 공격적인 사이버 보안 기능, 프롬프트 인젝션 공격 취약성 등을 평가하는 기능을 추가했습니다. (기술 논문 참고)
Code Shield는 LLM이 생성한 안전하지 않은 코드를 추론 시점에 필터링하는 기능을 제공합니다. 이를 통해 안전하지 않은 코드 제안, 코드 인터프리터 악용, 안전한 명령 실행 등의 리스크를 완화할 수 있습니다.
생성형 AI 분야가 빠르게 발전하고 있는 만큼, 메타는 오픈 접근법이 생태계를 하나로 모으고 잠재적 위험을 완화하는 중요한 방법이라고 믿습니다. 이에 LLM을 책임감있게 개발하기 위한 포괄적인 가이드인 Responsible Use Guide를 업데이트 했습니다.
Meta는 Llama-8B 및 70B 크기의 사전 학습 및 인스트럭션 튜닝된 LLM 제품군을 개발하여 출시했습니다. 인스트럭션 튜닝된 Llama 3 모델은 대화 사용 사례에 최적화되어 있으며 일반적인 업계 벤치마크에서 사용 가능한 많은 오픈 소스 채팅 모델보다 성능이 뛰어납니다.
LangChain: Llama3-8B 적용
Llama3를 LangChain과 함께 사용하는 방법을 보여드리겠습니다. 여기서는 데모를 위해 Llama-3-8B-Instruct모델을 사용합니다.
Llma3-8B 모델을 사용하려면 Hugginface 로그인 후에 아래 페이지에서 Access 사용 신청 후 승인이 되면 사용할 수 있습니다.(승인은 HF 계정 메일로 30분 이내 발송)
https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct
Huggingface Endpoints
허깅 페이스 허브 API 토큰이 올바르게 설정되어 있는지 확인하여 허깅 페이스 허브에서 모델과 리소스에 액세스할 수 있도록 합니다. Langchain 통합에 필요한 모듈을 가져오고 Llama-8b-Instruct 모델에 대한 허깅 페이스 엔드포인트를 설정합니다:
PromptTemplate
{'question': 'Who won the FIFA World Cup in the year 1994? ', 'text': '\n\nThe year 1994 was not a FIFA World Cup year, so there was no FIFA World Cup held in that year.'}
Multiple Questions
Question based on context
이번에는 context 맥락에 따른 질문을 영어로 해보겠습니다.
Conversational Memory
RAG Pipeline
WebBaseLoader로 웹페이지 링크를 걸고 ChromaDB로 Vector Store를 구성하는 RAG를 구현해 보겠습니다.
RAG chain with LCEL
프롬프트와 LLM에 검색 단계를 추가하여 RetrievalQA 체인을 추가하는 방법을 살펴 보겠습니다.
Conversational RAG
이 Chain은 채팅 기록(메시지 목록)과 새 질문을 받은 다음 해당 질문에 대한 답변을 반환합니다. 이 체인의 알고리즘은 세 부분으로 구성됩니다:
채팅 기록과 새 질문을 사용하여 '독립형 질문'을 만듭니다. 이는 이 질문을 검색 단계로 전달하여 관련 문서를 가져올 수 있도록 하기 위한 것입니다. 새 질문만 전달된 경우에는 관련 컨텍스트가 부족할 수 있습니다. 전체 대화가 검색에 전달된 경우 검색에 방해가 되는 불필요한 정보가 있을 수 있습니다.
이 새 질문이 검색자에게 전달되고 관련 문서가 반환됩니다.
검색된 문서는 새 질문(기본 동작) 또는 원래 질문 및 채팅 기록과 함께 LLM으로 전달되어 최종 응답을 생성합니다.
AI, 5년 뒤 사람보다 더 똑똑해진다 입니다.
Last updated