•  Meta AI의 Foundation Model인 LLaMA
  • 2024년 봄, 메타(Meta)에서 차기작 ‘라마 3 (8B, 70B)’를 공개
  • 현재 훈련 중인 400B 이상의 모델도 이어 공개될 것이라 예고됐고, 오픈AI의 차세대 LLM 모델인 GPT-5도 올여름 중 출시될 것이라는 소문이 있음
  • 라마 3는 라마 2보다 성능이 크게 향상된 것은 물론, 구글의 제미나이(Gemini)나 앤트로픽의 클로드(Claude) 등 주요 LLMs(Large Language Model, 대형 언어 모델)와 비교해도 비슷한 크기의 모델 중에서 가장 높은 성능을 보여줌

✔️ Llama 3 주요 특징 (개선 사항)

  라마 3 라마 2
학습 데이터셋 크기 15T (15조 개) 토큰

✅7배 이상 증가, 대규모 사전학습 확장
✅라마 3 pre-training 데이터셋 중 5% 이상을 30개 이상의 고품질 비영어권(non-English) 데이터셋으로 구성함, 단 성능이 영어와 같은 수준은 아님
2T (2조 개) 토큰
컨텍스트 길이 8K (8192)

✅2배 증가, 하지만 GPT-4의 128K에 비하면 상당히 작은 수준
4K (4096)
모델 종류 Llama-3-8B, 70B

✅400B⁺ 출시 예정
✅멀티모달(Multimodal) 데이터를 이해하는 능력 및 다양한 언어를 지원하는 모델도 출시될 예정
Llama-2-7B, 13B, 70B
아키텍처 GQA

✅추론 효율성 개선
• 7B, 13B 버전: MHA(Multi-Head Attention)

• 34B, 70B 버전: GQA(Grouped Query Attention)
토크나이저 128K 토큰을 보유한 새로운 토크나이저

✅언어를 더 효율적으로 인코딩해 성능 향상 (향상된 토큰 효율성)
BPE SentencePiece (32K 토큰 보유)
  • 2023년 7월, 메타에서 오픈 소스 LLM ‘라마 2’를 공개
    • 가장 인기 있는 오픈 소스 LLM
    • 상업적으로도 연구용으로도 무료로 사용
    • 라마2는 기존 버전보다 40% 더 많은 2조 개의 토큰으로 학습됨, 컨텍스트 길이도 두 배 증가한 4096
    • 파라미터 수에 따라 라마-2-7B, 13B, 70B 세가지 모델 제공
  • 라마 3 사용법
    1. 허깅페이스에서 라마3 사용하기
    2. 메타 AI 서비스로 라마3 활용하기
    3. Ollama로 내 PC에서 Llama3 실행하기
    4. 클라우드 환경에서 실행하기

 

참고:

https://modulabs.co.kr/blog/llama-3-intro/

 

 

LLM의 단점

LLM(Large Language Model)은 많은 장점에도 불구하고 다음과 같은 단점과 한계점을 가지고 있습니다:

  1. 편향성 문제
    • 학습 데이터에 내재된 편향성을 그대로 반영할 수 있음
    • 성별, 인종, 종교 등에 대한 고정관념이나 차별적 표현을 생성할 위험 존재
  2. 사실 관계 오류 가능성
    • 방대한 데이터를 학습하지만, 항상 정확한 정보를 제공하지는 않음
    • 잘못된 정보나 허위 정보를 진실로 간주하고 전파할 수 있음
  3. 맥락 이해의 한계
    • 문장 단위의 이해는 가능하지만, 장문의 글이나 복잡한 맥락 파악은 어려울 수 있음
    • 세계 지식과 상식 추론 능력이 부족하여 심층적인 이해에 한계 존재
  4. 일관성 문제
    • 동일한 입력에 대해 일관된 답변을 생성하지 않을 수 있음
    • 모델의 확률적 특성상 생성 결과가 매번 달라질 수 있어 신뢰성 저하
  5. 윤리적 문제
    • 악용 가능성이 존재하며, 책임 소재 파악이 어려울 수 있음
    • 모델의 출력 결과에 대한 통제와 검증 체계 마련 필요
    •  

RAG는 LLM의 단점 중 무엇을 개선하는가?

RAG(Retrieval-Augmented Generation)는 LLM의 단점 중 ‘사실 관계 오류 가능성’과 ‘맥락 이해의 한계’를 개선하는 데 초점을 맞춘 방법입니다. RAG는 LLM에 외부 지식 베이스를 연결하여 모델의 생성 능력과 사실 관계 파악 능력을 향상시키는 기술입니다.

구체적으로 RAG는 다음과 같은 방식으로 LLM의 한계를 보완합니다:

  1. 외부 지식 활용
    • 대규모의 구조화된 지식 베이스(예: 위키피디아)를 모델에 연결
    • 주어진 질의에 대한 관련 정보를 지식 베이스에서 검색 및 추출
  2. 증거 기반 생성
    • 검색된 지식 정보를 증거로 활용하여 보다 사실에 기반한 답변 생성
    • 생성된 답변의 출처를 명시함으로써 신뢰성 향상
  3. 맥락 이해력 향상
    • 외부 지식을 통해 질의에 대한 배경 지식과 맥락 정보를 파악
    • 단순한 패턴 매칭이 아닌 추론 능력을 바탕으로 한 답변 생성

RAG는 기존 LLM의 생성 능력과 외부 지식 베이스의 정보를 결합함으로써, 보다 정확하고 사실에 기반한 답변을 제공할 수 있습니다. 또한 모델의 출력 결과에 대한 증거를 제시할 수 있어 설명 가능성과 신뢰성을 높일 수 있습니다.

RAG 기술은 질의응답, 정보 검색, 팩트 체킹 등의 태스크에서 활발히 연구되고 있으며, 구글의 LaMDA, OpenAI의 WebGPT 등 최신 LLM에도 적용되고 있습니다. 다만 RAG 모델의 성능은 연결된 지식 베이스의 품질과 커버리지에 크게 의존하므로, 고품질의 지식 베이스 구축이 중요한 과제로 남아 있습니다.

 

RAG의 기본 개념

RAG(Retrieval-Augmented Generation)는 대규모 언어 모델(LLM)의 한계를 극복하기 위해 제안된 새로운 자연어 처리 기술입니다. LLM은 방대한 양의 텍스트 데이터를 사전 학습하여 강력한 언어 이해 및 생성 능력을 갖추고 있지만, 학습 데이터에 없는 최신 정보나 특정 도메인 지식은 제공하기 어렵다는 단점이 있습니다.

RAG는 이러한 LLM의 한계를 극복하기 위해 ‘지식 검색’과 ‘언어 생성’을 결합한 프레임워크입니다. RAG의 기본 아이디어는 질문에 답하기 위해 필요한 지식을 외부 데이터베이스에서 검색하여 활용하는 것입니다.

RAG의 주요 구성 요소

  1. 질의 인코더(Query Encoder): 사용자의 질문을 이해하기 위한 언어 모델입니다. 주어진 질문을 벡터 형태로 인코딩합니다.
  2. 지식 검색기(Knowledge Retriever): 인코딩된 질문을 바탕으로 외부 지식 베이스에서 관련 정보를 검색합니다. 예를 들어 Wikipedia, 뉴스 기사, 전문 서적 등 방대한 문서 집합에서 질문과 연관된 문단이나 구절을 찾아냅니다.
  3. 지식 증강 생성기(Knowledge-Augmented Generator): 검색된 지식을 활용하여 질문에 대한 답변을 생성하는 언어 모델입니다. 기존의 LLM과 유사하지만, 검색된 지식을 추가 입력으로 받아 보다 정확하고 풍부한 답변을 생성할 수 있습니다.

RAG의 동작 과정 요약

  1. 사용자의 질문이 주어지면 질의 인코더가 이를 이해하기 쉬운 형태로 변환합니다.
  2. 지식 검색기가 인코딩된 질문을 바탕으로 외부 지식 베이스에서 관련 정보를 검색합니다.
  3. 검색된 지식은 지식 증강 생성기의 입력으로 전달됩니다.
  4. 지식 증강 생성기는 검색된 지식을 활용하여 사용자 질문에 대한 답변을 생성합니다.

RAG는 LLM의 강력한 언어 이해 및 생성 능력과 외부 지식 활용을 결합함으로써, 보다 정확하고 풍부한 정보를 제공할 수 있습니다. 특히 최신 정보나 특정 도메인 지식이 필요한 질문에 효과적으로 대응할 수 있다는 장점이 있습니다.

RAG의 등장 배경과 필요성

RAG는 자연어 처리와 인공지능 기술의 발전, 그리고 증가하는 사용자의 요구에 따라 등장하게 되었습니다. RAG의 등장 배경과 필요성을 다음과 같이 정리할 수 있습니다.

  1. 지식 기반 질의응답 시스템의 한계
    • 초기의 질의응답 시스템은 주로 제한된 도메인의 구조화된 데이터를 기반으로 동작했습니다. 이는 시스템이 다룰 수 있는 주제와 질문의 유형이 한정적이라는 문제가 있었습니다.
    • 사용자의 다양한 정보 요구를 충족시키기 위해서는 보다 광범위한 지식을 활용할 수 있는 시스템이 필요하게 되었습니다.
  2. 비정형 텍스트 데이터의 폭발적 증가
    • 인터넷의 발달과 디지털 기기의 보급으로 웹페이지, 뉴스 기사, 소셜 미디어 게시물 등 비정형 텍스트 데이터가 기하급수적으로 증가하고 있습니다.
    • 이러한 대규모 텍스트 데이터는 방대한 지식을 포함하고 있어, 질의응답 시스템의 지식 베이스로 활용할 수 있는 잠재력이 높습니다.
    • 그러나 비정형 데이터를 효과적으로 처리하고 활용하기 위해서는 기존과는 다른 접근 방식이 필요했습니다.
  3. 사전 학습된 언어 모델의 발전
    • BERT, GPT 등 사전 학습된 대규모 언어 모델의 등장은 자연어 처리 분야에 큰 변화를 가져왔습니다.
    • 이러한 언어 모델은 방대한 텍스트 데이터로부터 언어의 구조와 의미를 학습하여, 다양한 언어 이해 및 생성 태스크에서 뛰어난 성능을 보여주었습니다.
    • 사전 학습된 언어 모델을 질의응답 시스템에 활용함으로써, 보다 자연스럽고 문맥을 고려한 답변 생성이 가능해졌습니다.
  4. 실시간 정보 제공에 대한 사용자의 요구 증대
    • 인터넷과 모바일 기기의 발달로 사용자들은 언제 어디서나 필요한 정보를 즉시 얻고자 하는 요구가 커지고 있습니다.
    • 단순히 정보를 검색하는 것을 넘어, 대화형 인터페이스를 통해 원하는 정보를 직관적으로 얻고자 하는 사용자가 늘어났습니다.
    • 이에 따라 사용자의 질문을 이해하고 적절한 답변을 실시간으로 제공할 수 있는 지능형 질의응답 시스템의 필요성이 대두되었습니다.
  5. 지식 검색과 답변 생성의 통합 필요성
    • 기존의 질의응답 시스템은 지식 검색과 답변 생성을 별도의 단계로 처리하는 경우가 많았습니다. 이로 인해 검색된 정보와 생성된 답변 사이의 정합성이 떨어지는 문제가 발생했습니다.
    • 지식 검색과 답변 생성을 통합적으로 수행할 수 있는 프레임워크의 필요성이 제기되었고, 이는 RAG 아키텍처의 등장으로 이어졌습니다.

이러한 배경과 필요성 속에서 RAG는 대규모 비정형 텍스트 데이터를 활용하고, 사전 학습된 언어 모델과 통합 프레임워크를 통해 보다 진보된 형태의 질의응답 시스템을 구현하고자 합니다. RAG는 사용자의 다양한 정보 요구를 만족시키고, 인간과 자연스럽게 상호작용할 수 있는 지능형 대화 시스템의 발전에 기여할 것으로 기대됩니다.

RAG 기술을 적용한 상용 서비스 사례

RAG 기술을 적용한 상용 서비스는 아직 많지 않지만, 몇몇 대표적인 사례들이 있습니다.

  1. Microsoft Bing Search
    • 2023년 2월, Microsoft는 Bing 검색 엔진에 RAG 기술을 적용한 대화형 AI 기능을 추가했습니다.
    • 사용자의 검색 질의에 대해 웹 페이지의 정보를 활용하여 자연어로 응답을 생성합니다.
    • 제공된 응답의 근거가 되는 웹 페이지 링크를 함께 제시합니다.
  2. Anthropic’s Constitutional AI (CAI)
    • Anthropic사는 RAG 기술을 활용한 대화형 AI 모델인 CAI를 개발했습니다.
    • CAI는 대화 과정에서 외부 지식을 활용하여 사용자의 질문에 답변을 생성합니다.
    • 생성된 응답의 근거가 되는 출처를 명시하여 신뢰성을 높였습니다.
  3. Perplexity AI
    • Perplexity AI는 RAG 기반의 질의응답 서비스를 제공하는 스타트업입니다.
    • 사용자의 질문에 대해 웹 검색을 통해 관련 정보를 수집하고, 이를 바탕으로 응답을 생성합니다.
    • 제공된 응답의 출처와 검색 과정을 사용자에게 투명하게 공개합니다.
  4. OpenAI’s WebGPT (in development)
    • OpenAI는 GPT 모델에 RAG 기술을 적용한 WebGPT를 개발 중입니다.
    • WebGPT는 웹 검색을 통해 획득한 지식을 활용하여 사용자의 질의에 대한 응답을 생성할 것으로 예상됩니다.
    • 아직 공개된 서비스는 아니지만, 향후 RAG 기술의 발전 방향을 보여주는 사례로 주목받고 있습니다.

위의 사례들은 RAG 기술의 초기 적용 단계라고 볼 수 있습니다. RAG의 잠재력이 입증됨에 따라 앞으로 더 많은 분야에서 RAG 기반의 서비스들이 등장할 것으로 예상됩니다. 특히 검색 엔진, 가상 어시스턴트, 고객 서비스 등의 분야에서 RAG 기술이 활발히 도입될 것으로 보입니다.

다만 RAG 기술의 상용화를 위해서는 지식 베이스의 품질 관리, 프라이버시 보호, 책임 소재 등의 이슈들이 선결되어야 할 것입니다. 기술적 진보와 함께 사회적, 윤리적 문제에 대한 고민이 병행되어야 RAG가 실생활에 안전하게 적용될 수 있을 것입니다.

 

 

참고: 

https://modulabs.co.kr/blog/retrieval-augmented-generation/

 

RAG(검색 증강 생성)란? - LLM 단점을 보완하는 기술

LLM(Large Language Model)의 많은 장점에도 불구하고 단점을 보완하기 위한 RAG(검색 증강 생성)이 많은 관심을 받고 있습니다. RAG의 기본 개념, 등장 배경, 원리, 적용 사례 등을 알아보겠습니다.

modulabs.co.kr

 

Video Analysis 개요

Computer Vision(CV)의 핵심은 이미지를 이해하는 것입니다.

현재, "이미지를 이해"하는 것에서 "비디오를 이해"하는 것으로 점점 발전하고 있습니다.

 

비디오(영상) 분석은 

   1. 비디오란 - "일련의 이미지들"이라고 할 수 있으며, 단일 이미지보다 더 많은 상황정보를 제공합니다.

   2. 사물을 트랙킹(Object Tracking)을 통해서, 다음 움직임(Next Move)이 무엇인지 예측할 수 있습니다.

       - 예를 들어, 사람의 움직임을 예측하는 Human Pose 분야도 포함됩니다.

 

비디오(영상) 분석의 핵심 요소 :

   1. Object Detection 

   2. Object Tracking

   3. Action Classification

이라고 할 수 있습니다.

 

Object Detection은 이미지 분석에서도 충분히 다루므로,

Object Tracking부터 설명드리고자 합니다.

 

① Object Tracking

비디오(영상) 분석의 핵심 요소 중 Object Tracking에 대해서 설명하고자 합니다.

 

이미지와 비디오와 차이는 'Motion'이며, 이를 위한 Tracking이 필요합니다.

Object Tracking의 카테고리 :

   1. Video Stream : Live Image Feed - 실시간 이미지 스트리밍

      - 현재 이미지와 이전 이미지를 고려

   2. Video Sequence : Fixed-Length Video - Full 영상

      - 첫 이미지부터 마지막 이미지까지, 전체를 다룸

 

1) Optical Flow(광학 흐름)

   - Optical Flow란 : 영상에서 모션(Motion) 벡터를 찾는 방법으로써, 두 프레임(Frame) 사이의 Pixel Shift를 계산

                          en.wikipedia.org/wiki/Optical_flow

 

   - Optical Flow의 출력 값(Output) : Frame1  Frame2 사이의 흐름(Movement)에 대한 벡터 값(Vector)

Optical Flow 예시

 

Optical Flow(광학 흐름) 대표 딥러닝 논문

 

    FlowNet : 6-depth(2 RGB)를 Input을 활용하여, Optical Flow를 색으로 표시

FlowNet 구조

네트워크의 입력은 두 개의 RGB 이미지 세트입니다. 따라서 깊이는 6입니다.
광학 흐름은 종종 색상으로 표현됩니다.

 

2) Visual Object Tracking(VOT)

Optical Flow가 Pixel단위의 흐름을 추적한다면, Visual Object Tracking(VOT)는 객체(Object) 단위를 트랙킹 한다.

 

Visual Object Tracking 특징 :

   1. Object Detection은 필요하지 않음 - 무엇을 Tracking 하는지 알 필요 없음

   2. 초기 경계 박스(Starter Bounding Box)가 주어짐

   3. 주어진 객체를 추적함

       - 프레임 0과 1의 유사성을 계산

       - 경계박스 내 물체 확인 및 다음 프레임에서 검색

       - 경계 박스를 이동하여, Object를 추적

 

   ※ ※ 번외 : 딥러닝을 사용하지 않는 VOT 

  • 색상 같은 기능을 사용해 개체를 추적할 수도 있음(CV만 사용 가능)
  1. Bounding box를 활용하여, 초기 추적할 object를 입력 받음
  2. 객체의 색상 히스토그램 계산
  3. (객체 근처) 배경색 계산
  4. 전체 이미지에서 객체의 색을 제거



Visual Object Tracking 대표 딥러닝 논문

 

    MDNet(Multi-Domain Net) : Object와 Background를 구별하는 딥러닝을 학습

       - Domain-specific Layer가 존재

       - VGG 모델처럼 보이지만, 도메인별 레이어(객체 대 배경 분류자)가 있음

MDNet 구조

 

    GOTURN(Generic Object Tracking Using Regression Networks) 

       : 두 CNN 모델(Previous Frame 및 Currenet Frame 용)을 활용하여, 검색할 영역(Region)을 특정시킴

       - 100 FPS에서 작동 가능하며, 좋은 성능을 보임

GOTURN 구조

 

3) Multiple Object Tracking(MOT)

 

Multiple Object Tracking 특징 :

   1. 여러 객체를 트랙킹함

   2. VOT보다 더 Long-Term 한 영상을 다룸

 

Multiple Object Tracking 종류 :

   1. Detection-Based Tracking - (YOLO - Deep SORT)

   2. Detection-Free Tracking

 

Detection-Based Tracking세부 Task :

   1. Object Dectection

   2. Object Association

       - Time t의 탐지(Detection) 결과와 Time t+1 탐지 간의 연계

       - Detection 성능에 상당히 의존적임

       - Good Tracker는 약간의 Frame은 Detection 없이 처리해야 함

    * 관련된 내용은 Deep SORT를 다루면서

      nanonets.com/blog/object-tracking-deepsort/

      haandol.github.io/2020/02/27/deep-sort-with-mxnet-yolo3.html

 

② Action Classification

비디오(영상) 분석의 핵심 요소 중 마지막 Action Classification에 대해서 설명하고자 합니다.

 

예를 들어, Action Classification은 매장 내 사람들의 행동을 분석할 때 사용한다.

 

Action Classification의 특징 :

   1. Bounding Box내에서의 Action을 알기 위해선,Object Detection과 Tracking이 우선 되어야 함

      - 주어진 상황이나 장면을 우전적으로 이해해야 되기 때문에

   2. 가장 좋은 카메라 각도(앵글)를 선택

   3. Action 분류( 쉬운 : 걷기, 달리기 ~ 어려운 : 샌드위치 만들기 - 여러 작업(빵 짜르기, 토마토 씻기 등)이 복합됨)

 

Action Classification 대표 딥러닝 논문

   ○ Optical Flow 활용 

Optical Flow를 활용한, Action Classification

       - Optical Flow를 Input으로 받음

       - Action Classifier(Softmax) Layer를 추가

 

   ○ End-to-End 학습 방법

 

    - Action Classification을 위한, End-to-End 학습 예시 : 

Two-scale Model

       - 이미지와 다르게, 다중 Frame을 처리해야 함 → Space-time Volume이라고 함

       - Spatial Stream : Single Image에 적용

       - Temporal Stream : Optical Flow 이미지들을 입력 받음

 

  ※ 번외 : 그 이외에 Action Classification - Pose Estimation

   1. Detecting Keypoint - Keypoint란 왼쪽 그림의 점들

   2. Tracking Detecting Keypoint 

   3. Keypoint의 움직임을 분석 

 


마치며

       - 이미지와 영상분석의 차이에 대해서 다루었습니다.

       - 영상분석의 주요 개념(Tracking, Action classification)에 대해서 다루었습니다.

       - 다음번에는 대표적인 Tracking방법인, Deep SORT를 다루어볼 예정입니다.

 

 

 

참고: https://kmhana.tistory.com/20

 

영상 분석(Video Analysis) 이란? - 기본

*크롬으로 보시는 걸 추천드립니다* 이미지 분석(Image Analysis)을 연구하거나, 산업에 적용하다 보면 영상 분석(Video Analysis)에 대해서 종종 접하게 됩니다. 영상 분석을 접할 기회가 적은 편이고, '

kmhana.tistory.com

https://fritz.ai/computer-vision-from-image-to-video-analysis/

 

Computer Vision and Deep Learning: From Image to Video Analysis - Fritz ai

Computer vision, at its core, is about understanding images. The field has seen rapid growth over the last few years, especially due to deep learning and the ability to detect obstacles, segment images, or extract relevant context from a given… Continue

fritz.ai

 

LLM이란?

  • Large Language Model의 약자로 대규모 언어 모델을 뜻함
  • 인간과 유사한 텍스트를 처리, 이해 및 생성하도록 설계된 고급 인공 지능(AI) 시스템
  • 딥러닝 기술 기반이며 웹 사이트, 책, 기사와 같은 다양한 소스에서 수십억 개의 단어를 포함하는 대규모 데이터 세트에서 훈련됨
  • 언어, 문법, 문맥 및 일반 지식의 뉘앙스를 파악할 수 있음
    • 응답 질문 
    • 텍스트 요약
    • 언어 번역
    • 콘텐츠 생성
    • 사용자와의 양방향 대화(챗봇)

 

LLM 데이터 코퍼스 구축의 필수 요소

  • 데이터 코퍼스: 말뭉치/ 자연어 연구를 위해 특정한 목적을 가지고 언어의 표본을 추출한 집합

    1. 수량보다 데이터 품질 우선시

       -  광범위하지만 체계적이지 않은 데이터에 대해 훈련된 모델은 부정확한 결과를 낳을 수 있음.

       - 더 작고 세심하게 선별된 데이터 세트는 종종 우수한 성능을 보임.

     2. 적절한 데이터 소스 선택

          -  대화 생성 모델에서 대화 및 인터뷰 소스 활용하기

          - 코드 생성 초점 모델은 잘 문서화된 코드 저장소의 이점 활용 등 

     3. 합성 데이터 생성 사용

          - 합성 데이터로 데이텟을 강화하면, 훈련 데이터셋의 다양성을 확대하여 모델의 탄력성을 향상시키고 편향을 줄일 수 있음

     4. 자동화된 데이터 수집 구현

 

2024년에 주목해야할 LLM 오픈소스 모델

 

1. Llama 2

  • Meta AI에서 개발한 오픈소스 LLM
  • 가장 인기있는 오픈소스이고 2023년 7월 18일에 상용됨
  • 7B에서 70B까지 네 가지 크기를 제공
  • llama 1보다 더 큰 2조 개의 토큰으로 구성되어 있음
  • 표준 트랜스포머 아키텍처 활용 -> RMSNorm(Root Mean Square layer normalization), RoPE(Rotary Positional Embedding)과 같은 새로운 기능 적용
  • Supervised fine-tuning(미세조정)으로 시작하여 RLHF(휴먼 피드백을 통한 강화학습)를 통해 개선됨
  • tokenizer: Byte Pair Encoding(BPE) 알고리즘과 SentencePiece 사용

인간 피드백을 통한 강화학습(RLHF)과 보상 모델링을 통해 양방향 대화에 최적화한 LLaMA 21-Chat(출처: Meta AI)

 

2. Mistral

  • Mistral AI가 출시한 모델로 맞춤형 학습과 튜닝 및 데이터 처리 방법을 기반으로 생성됨
  • Apache 2.0 라이선스로 제공되는 오픈 소스 모델
  • 실제 애플리케이션에 적용할 수 있게 설계되어 효율적이며 높은 성능 제공
  • 수학, 코드 생성 및 추론을 포함한 다양한 벤치마크에서 뛰어난 성능 발휘
  • Mistral-7B: tiny 모델로 복잡한 계산이 없는 대용량 batch 처리 작업에 적합, 애플리케이션에 가장 비용 효율적

다양한 벤치마크에서 Mistral 7B와 Llama 모델의 성능 비교

3. Solar

  • 업스테이지에서 출시한 소형 언어모델
  • 107억 개의 매게변수로 이루어짐
  • 필수적인 NLP(자연어 처리) 작업에서 더 나은 성능을 발휘하면서도 효율성을 유지하는 최신이자 오픈소스 LLM
  • 2023년 12월 세계 최댛 머신러닝 플랫폼인 허깅페이스가 운영하는 '오픈 LLM 리더보드'에서 1위 달성
  • sLLM의 기준이라고 할 수 있는 300억 매개변수(30B) 이하 사이즈로 글로벌 최고 성능 모델에 오름
  • 자체적으로 구축한 데이터 적용 및 자체 스케일링 기법(Depth Up-Scaling) 활용
    • 사전 학습 및 파인튜닝 단계에서 리더보드 벤치마킹 데이터셋을 활용하지 않음 자체적으로 구축한 데이터 적용

4. Yi

  • 8개월만에 10억 달러 이상의 가치를 인정받으며 유니콘 기업으로 성장한 중국 스타트업 01.AI가 개발
  • 다국어 모델을 목표로 모델 학습에 고품질의 3T 다국어 코퍼스 활용
  • 이해력, 상식 추론, 독해력 등에서 주목할만한 성능을 보임
  • LLaMA와 동일한 모델 아키텍처 활용
  • 6B 및 34B 크기의 모델 제공/ 추론 시간 동안 32K 확장 가능
    • 6B: 개인용 및 학술용으로 적합
    • 34B: 상업용 및 개인용, 학술용으로 적합

 

5. Falcon

  • 아랍에미리트(UAE)의 기술혁신연구소에서 출시한 생성형 대규모 언어 모델
  • 180B, 40B, 7.5B, 1.3B 파라미터의 AI 모델 제공
    • 40B:
      • 연구자와 상업 사용자 모두에게 로열티 없이 제공되고 있음
      • 11개의 언어로 작동 가능/ 특정 요구사항에 맞게 파인튜닝 가능
      • GPT-3 보다 적은 훈련 컴퓨팅리소스를 사용하며 품질 높은 훈련 데이터에 초점을 맞춤
    • 180B:
      • 1800억 개의 파라미터 보유/ 3.5조 개의 토큰을 훈련하여 탁월한 성능을 발휘

LLM의 장점

  1. 광범위한 지식 활용
    • - 방대한 양의 텍스트 데이터를 학습하여 다양한 분야의 지식을 습득
    • - 학습한 지식을 바탕으로 사용자의 질문에 폭넓고 심도 있는 답변 가능
  2. 뛰어난 언어 이해 및 생성 능력
    • - 단어 간의 관계와 문맥을 고려하여 자연스러운 언어 이해 가능
    • - 문법적으로 정확하고 의미 있는 문장 생성 능력
  3. 다양한 태스크 수행 가능
    • - 텍스트 분류, 질의응답, 요약, 번역, 문장 생성 등 다양한 NLP 태스크 처리 가능
    • - 하나의 모델로 여러 태스크를 수행할 수 있어 범용성이 높음
  4. 사용자 친화적인 인터페이스
    • - 자연어로 된 사용자 입력을 이해하고 응답할 수 있어 접근성이 좋음
    • - 챗봇, 가상 어시스턴트 등으로 활용되어 사용자 경험 향상
  5. 다양한 분야에서의 활용
    • - 고객 서비스, 콘텐츠 제작, 교육, 의료 등 다양한 산업 분야에서 활용 가능
    • - 사람과 기계 간의 상호작용을 향상시키고 업무 효율성 증대에 기여

LLM의 단점

  1. 편향성 문제
    • 학습 데이터에 내재된 편향성을 그대로 반영할 수 있음
    • 성별, 인종, 종교 등에 대한 고정관념이나 차별적 표현을 생성할 위험 존재
  2. 사실 관계 오류 가능성
    • 방대한 데이터를 학습하지만, 항상 정확한 정보를 제공하지는 않음
    • 잘못된 정보나 허위 정보를 진실로 간주하고 전파할 수 있음
  3. 맥락 이해의 한계
    • 문장 단위의 이해는 가능하지만, 장문의 글이나 복잡한 맥락 파악은 어려울 수 있음
    • 세계 지식과 상식 추론 능력이 부족하여 심층적인 이해에 한계 존재
  4. 일관성 문제
    • 동일한 입력에 대해 일관된 답변을 생성하지 않을 수 있음
    • 모델의 확률적 특성상 생성 결과가 매번 달라질 수 있어 신뢰성 저하
  5. 윤리적 문제
    • 악용 가능성이 존재하며, 책임 소재 파악이 어려울 수 있음
    • 모델의 출력 결과에 대한 통제와 검증 체계 마련 필요

LLM의 단점 중 ‘사실 관계 오류 가능성’과 ‘맥락 이해의 한계’를 개선하는 데 초점을 맞춘 것이 바로 RAG(Retrieval-Augmented Generation)입니다. RAG를 자세히 알고 싶다면 아래 내용을 참고해주세요:)

 

https://aristudy.tistory.com/126

 

RAG(Retrieval-Augmented Generation)란?

LLM의 단점LLM(Large Language Model)은 많은 장점에도 불구하고 다음과 같은 단점과 한계점을 가지고 있습니다:편향성 문제학습 데이터에 내재된 편향성을 그대로 반영할 수 있음성별, 인종, 종교 등에

aristudy.tistory.com

 

참고:

오픈소스 LLM Top 5 (2024) — Upstage

LLM(Large Language Models)이란 무엇입니까? - 주요 사용 사례, 데이터 세트, 미래 (shaip.com)

1. 텍스트 데이터의 구성

  • 말뭉치 (corpus, 코퍼스) = 일반적인 원시텍스트와 이 텍스트에 연관된 메타데이터를 포함한 것
  • 원시텍스트 = 문자(바이트)시퀀스이지만 일반적으로 문자를 토큰이라는 연속된 단위로 묶여 있음 - ASCII, UTF-8 형태
  • 토큰 = 공백문자나 구두점으로 구분되는 단어 혹은 숫자
  • 메타데이터 = 식별자, 레이블, 타임스템프 등 텍스트와 연관된 어떤 부가정보
  • 샘플(Sample) or 데이터포인트 = 메타데이터가 붙어있는 텍스트 
  • 말뭉치 = 샘플들의 모음 = 데이터셋

2. 토큰화

  • 어진 말뭉치(코퍼스)를 토큰으로 나누는 과정을 토큰화 라고 함
"Maria frapis la verda sorcistino"
  •  6개의 토큰 존재(공백문자와 구두점으로 구분)
  •  참고로 토큰은 문장, 줄바꿈, 공백 등 다양한 사용자 기준에 따라 나눌 수 있음
  •  예시의 터키어는 한국어와 같이 교착어라고 부름
  •  교착어: 실질적인 단어 또는 어간에 문법적인 요소가 차례대로 결합함으로써 문장 속에서 문법적인 역할이나 관계의 차이를 나타내는 언어

 3. 타입

  • 타입 = 말뭉치에 등장하는 고유한 토큰
  • 말뭉치에 있는 모든 타입의 집함 = 어휘사전 or 어휘
  • 단어 = 내용어 / 불용어로 구분
    • 불용어 = 관사와 전치사 같은 대부분 내용어를 보충하는 문법적인 용도로 사용

4. n-gram 

참고: [NLP] 텍스트 데이터의 기초 / 말뭉치, 토큰화, n-gram (tistory.com)

 

 

 

 

 

생성형 AI란?

  • 학습된 데이터를 기반으로 고품질 텍스트, 이미지 및 기타 콘텐츠를 생성할 수 있는 인공지능

생성형 AI의 구성 요소

  • 파운데이션 모델: 다양한 LLM 모델을 더 넓은 개념으로 확장할 수 있도록 하는 것 / 완성된 모델 중 하나가 생성형 AI 모델임

 

RNN이란?

  •  recurrent neural networks의 약자, 한국어로 순환 신경망
  • 고정 길이 입력이 아닌 임의 길이를 가진 시퀀스를 다룰 수 있음 
    • STT, 자동 번역과 같은 NLP 작업에도 유용

RNN 구조 

  •  각 타임 스텝 t(또는 프레임)마다 \(x_{(t)}\)와 이전 타임 스텝의 출력인 \(y_{(t-1)}\)을 입력받음.
  • 첫번째 타임 스텝은 이전 출력이 없으므로 0으로 설정
  • 역전파 이용 (BPTT) -> 현재 메모리 셀이 예측한 값이 실제값과 차이(=error)가 나면 이는 이전의 메모리 셀에서 잘못한 것이라고 생각
  • 가중치가 각 메모리 셀마다 다른 값을 가지는 것이 아니라 정방향 패스 동안 모든 타임 스텝이 동일한 가중치 행렬을 공유

예제 코드 참고: RNN 개념 잡고 간단 예제 코드 돌려보기 (2) (tistory.com)

 

하이퍼파라미터 최적화의 중요성

 - 하이퍼파라미터를 어떻게 선택하느냐에 따라 overfit, underfit 모델이 될 수 있다. 따라서 최적화된 파라미터를 찾기 위해 값을 조정하면서 모델을 수행 및 검증해야 한다. 이 과정을 손쉽게 도와주는 프레임워크가 'optuna'이다.

Optuna

 - 하이퍼파라미터 튜닝에 쓰고 있는 최신 Automl 기법

 - 빠르게 튜닝 가능

 - 하이퍼파라미터 튜닝 방식을 지정 가능 -> lightgbm 제공

- 다른 라이브러리들에 비해 직관적인 장점이 있음

 

from sklearn.model_selection import train_test_split
from sklearn.experimental import enable_hist_gradient_boosting
from sklearn.ensemble import AdaBoostRegressor,  HistGradientBoostingRegressor, StackingRegressor, RandomForestRegressor
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import KFold
from sklearn.neural_network import MLPRegressor
from sklearn.linear_model import SGDRegressor

import xgboost as xgb

from lightgbm import LGBMRegressor
from xgboost import XGBRegressor
from catboost import CatBoostRegressor

import optuna 
from optuna import Trial, visualization
from optuna.samplers import TPESampler

# optuna.logging.set_verbosity(optuna.logging.WARNING)

def train(model):
    X_train, X_test, y_train, y_test = train_test_split(X, y.flatten(), test_size=0.1, random_state=156)
    y_train = y_train.reshape(-1, 1)
    y_test  = y_test.reshape(-1, 1)
        
    model = model.fit(X_train, y_train, early_stopping_rounds=100, verbose=False, eval_set=[(X_test, y_test)])
    score = mean_squared_error(model.predict(X_train), y_train, squared=False)
    print(score)
    return model
def objectiveXGB(trial: Trial, X, y, test):
    param = {
        "n_estimators" : trial.suggest_int('n_estimators', 500, 4000),
        'max_depth':trial.suggest_int('max_depth', 8, 16),
        'min_child_weight':trial.suggest_int('min_child_weight', 1, 300),
        'gamma':trial.suggest_int('gamma', 1, 3),
        'learning_rate': 0.01,
        'colsample_bytree':trial.suggest_discrete_uniform('colsample_bytree',0.5, 1, 0.1),
        'nthread' : -1,
        'tree_method': 'gpu_hist',
        'predictor': 'gpu_predictor',
        'lambda': trial.suggest_loguniform('lambda', 1e-3, 10.0),
        'alpha': trial.suggest_loguniform('alpha', 1e-3, 10.0),
        'subsample': trial.suggest_categorical('subsample', [0.6,0.7,0.8,1.0] ),
        'random_state': 42
    }
    X_train, X_test, y_train, y_test = train_test_split(X, y.flatten(), test_size=0.1)
    
    y_train = y_train.reshape(-1, 1)
    y_test  = y_test.reshape(-1, 1)

    model = xgb.XGBRegressor(**param)
    xgb_model = model.fit(X_train, y_train, verbose=False, eval_set=[(X_test, y_test)])
    score = mean_squared_error(xgb_model.predict(X_test), y_test, squared=False)

    return score
study = optuna.create_study(direction='minimize',sampler=TPESampler())
study.optimize(lambda trial : objectiveXGB(trial, X,  y, X_test), n_trials=50)
print('Best trial: score {},\nparams {}'.format(study.best_trial.value,study.best_trial.params))

best_param = study.best_trial.params
xgbReg = train(xgb.XGBRegressor(**best_param, tree_method='gpu_hist', random_state=42, predictor='gpu_predictor', learning_rate=0.01, nthread=-1))

#params =  {'n_estimators': 3520, 'max_depth': 11, 'min_child_weight': 231, 'gamma': 2, 'colsample_bytree': 0.7, 'lambda': 0.014950936465569798, 'alpha': 0.28520156840812494, 'subsample': 0.6}
#xgbReg = train(xgb.XGBRegressor(**params, tree_method='gpu_hist', random_state=42, predictor='gpu_predictor', learning_rate=0.01, nthread=-1))

# 0.6744648190960726

하이퍼파라미터 최적화 진행 과정

- 최적화 기능 이외에도 다양한 시각화 기법을 제공한다. 그 중 2가지를 가장 잘 쓸 것 같아 메모한다!

 

1. 하이퍼파라미터별 중요도를 확인할 수 있는 그래프

optuna.visualization.plot_optimization_history(study)

2. 매 trial 마다 loss가 어떻게 감소하였는지 확인할 수 있는 함수

optuna.visualization.plot_param_importances(study)

- 코드 참고: https://www.kaggle.com/code/ssooni/xgboost-lgbm-optuna/notebook

대다수의 object detection algorithm은 object가 존재하는 위치 주변에 여러개의 score가 높은 bounding box를 만든다는 문제점이 있습니다. 이 중 하나의 bounding box만을 선택해야 하는데, 이때 적용하는 기법이 non-max suppression 입니다. 즉, Non-Maximum Suppression은 object detector가 예측한 bounding box 중에서 정확한 bounding box를 선택하도록 하는 기법입니다. optimal 한 solution일 수는 없고 local maxima를 찾는 방법이라고 볼 수 있습니다.

 

NMS의 과정

  1. 모든 Bounding box는 자신이 해당 객체를 얼마나 잘 잡아내지 나타내는 confidence score를 가집니다. 모든 bounding box에 대하여 threshold 이하의 confidence score를 가지는 Bounding Box는 제거합니다. Confidence score가 일정 수준 이하인 bounding box들에 대해 일차적으로 필터링을 거치는 과정입니다.
  2. 남은 Bounding Box들을 Confidence score 기준 모두 내림차순 정렬합니다.
  3. 맨 앞에 있는 Bounding box 하나를 기준으로 잡고, 다른 bounding box와 IoU 값을 구합니다. IoU가 threshold 이상인 Bounding box들은 제거합니다. Bounding box끼리 IoU가 높을수록, 즉 많이 겹쳐질수록 같은 물체를 검출하고 있다고 판단하기 때문입니다.
  4. 해당 과정을 순차적으로 시행하여 모든 Bounding box를 비교하고 제거합니다.
  5. Confidense threshold가 높을수록, IoU threshold가 낮을수록 더 많은 bounding box가 제거됩니다.

바로 object끼리 겹칠 때 다른 object에 대한 bounding box 까지 날라갈 수 있다는 것인데요. 현실에서는 object끼리 겹치는 경우가 매우 많습니다. 이를테면 아래와 같은 상황에서 그냥 NMS를 이용한다면, 자동차에 대해서 detection을 하면 트럭같은경우는 detection을 못하고 날라갈 수도 있겠죠?

 

이 문제를 해결하기 위해 나온 방법이 Anchor box입니다. Anchor box는 탐지하려는 객체의 모양을 정해놓고 객체가 탐지되었을 때 어떤 anchor box와 유사한지 판단해서 벡터값을 할당하는 방법입니다.

 

EfficientNet은 성능과 모델 크기 간 균형을 맞추기 위해 설계된 Convolutional Neural Network(CNN) 모델입니다. EfficientNet은 모델 크기를 조절하기 위한 계수들을 사용하는 Compound Scaling이라는 개념을 도입하고 있습니다. 이를 통해 모델의 깊이(Depth), 폭(Width) 및 해상도(Resolution)를 조절하여 성능을 최적화할 수 있습니다.

※ Compound scaling: 가장 최적의 width/depth/resolution의 조합을 찾아내는 것

 

EfficientNet 모델은 기본적으로 Convolutional Neural Network (CNN)의 구조를 따르며, 다양한 크기의 모델이 존재합니다. 이 중에서는 EfficientNet-B0, EfficientNet-B1, EfficientNet-B2 등이 있으며, 크기가 증가함에 따라 보다 복잡한 구조를 가집니다.

 

모델은 기본적으로 네 개의 블록으로 구성됩니다. 첫 번째 블록은 Convolutional layer, Batch Normalization, Swish activation으로 이루어져 있으며, 이후 블록은 Inverted Residual block, Depthwise Separable Convolution, squeeze-and-excitation network(SENet)를 사용하여 구성됩니다. 마지막 블록은 Fully Connected layer로 이루어져 있습니다.

 

Inverted Residual block은 Residual block과 비슷하지만, 레이어들이 반전된 형태입니다. Depthwise Separable Convolution은 커널 수가 적은 Depthwise Convolution과 Pointwise Convolution의 결합으로 구성됩니다. SENet은 채널에 대한 정보를 다시 조정하여, 적은 계산 비용으로 성능을 개선합니다.

 

EfficientNet 모델은 이미지 분류(Classification) 뿐만 아니라, 객체 검출(Object Detection), 분할(Segmentation), 인스턴스 분할(Instance Segmentation) 등의 다양한 컴퓨터 비전 작업에서도 사용됩니다. PyTorch, TensorFlow, Keras 등의 딥러닝 프레임워크에서 구현이 가능합니다.

https://lynnshin.tistory.com/53

https://norman3.github.io/papers/docs/efficient_net.html

+ Recent posts