김형 BLOG

EXAONE 3.0 7.8B 모델의 llamafied과 파인튜닝

EXAONE 3.0 소개: EXAONE 3.0은 LG AI Research에서 개발한 명령 조정 언어 모델로, LLM(대형 언어 모델) 시리즈 중 최초의 개방형 모델로 유명합니다. 78억 개의 매개변수 버전이 연구 및 혁신을 지원하기 위해 공개적으로 출시되었습니다.

성능 및 역량: 이 모델은 경쟁력 있는 성능을 보여줍니다. 특히 한국어 작업에서 탁월한 성능을 발휘하는 동시에 일반적인 작업과 복잡한 추론에서도 우수한 성능을 발휘합니다. 언어 기술과 도메인 전문성을 향상하기 위해 대규모 데이터 세트(8조 토큰)에 대한 교육을 받았습니다.

모델 아키텍처 및 기능: EXAONE 3.0은 RoPE(Rotary Position Embeddings) 및 GQA(Grouped Query Attention)와 같은 고급 기술을 사용합니다. 32개 레이어, 모델 차원 4,096개로 이루어져 있으며 SwiGLU 활성화 기능을 사용하여 복잡한 언어 작업을 처리하는 데 최적화되어 있습니다.

공개 가용성 및 사용: EXAONE 3.0은 주로 LG의 상업 파트너를 위한 것이지만 7.8B 모델은 비상업적 연구 목적으로 사용할 수 있습니다. 이 공개 릴리스는 더 광범위한 AI 연구 커뮤니티에 기여하는 것을 목표로 합니다.

윤리적 고려 사항 및 안전 조치: 이 모델은 오용을 방지하기 위한 조치를 통해 엄격한 윤리 및 보안 테스트를 거쳤습니다. LG AI Research는 레드팀 구성 및 기타 안전 프로토콜을 통해 편견, 차별, 유해 콘텐츠에 대한 대응을 포함하여 책임 있는 사용을 강조합니다.

read more

LLM2Vec 디코더 전용 LLM을 텍스트 인코더로 변환하는 방법

LLM2Vec: 디코더 전용 LLM을 텍스트 인코더로 변환하는 방법

LLM2Vec은 강력한 텍스트 임베딩을 위해 디코더 전용 대규모 언어 모델(LLM)을 활용하는 새로운 접근 방식을 도입하여 BERT와 같은 기존 인코더 기반 방법과 대조됩니다. 이 백서에서는 텍스트 임베딩 작업에 디코더 전용 모델을 사용하는 방법, 실험 및 그 효과를 입증하는 결과에 대해 설명합니다.

read more

LLM 병합 Mergekit을 사용해보자 간단히 따라해보기

툴킷 소개 및 목적:

MergeKit은 매개변수를 결합하고 전이 학습의 발전을 활용하여 대규모 언어 모델(LLM)을 병합하도록 설계된 툴킷입니다.
이는 광범위한 재교육 없이 오픈 소스 LLM의 기능을 향상하여 치명적인 할루시네이션과 같은 문제를 해결하는 것을 목표로 합니다.

병합 기술:
Linear Mode Connectivity (LMC):모델 가중치의 선형 평균을 활용합니다.
Task Arithmetic: 작업 벡터에 대한 산술 연산을 포함합니다.
Permutation Symmetry: 다양한 변환을 사용하여 손실 환경의 공통 영역에 대한 가중치를 조정합니다.
고급 기술: Fisher information 매트릭스, RegMean 및 OTFusion(Optimal Transport Fusion)과 같은 방법을 포함합니다.

read more

PaliGemma 구글의 오픈소스 멀티모달 리뷰

구글의 오픈소스 멀티모달 Paligemma입니다.

이 모델 또한 llava나 다른 모델 처럼 visual model과 llm을 선형 프로젝션해서 구현한 모델입니다. Joint Fusion의 멀티모달 이미지 텍스트 모델입니다. 이러한 joint fusion은 학습 과정에서 특정 레이어에서 다른 모달리티 데이터를 융합을 시도합니다.

주로 임베딩층에서 clip모델과 llm 모델을 사용합니다. 이 경우에도 SiglipVisionModel과 GemmaModel을 사용해서 중간에 multi_modal_projector을 통해서 이미지 정보와 함께 llm에 전달해서 사용되는 것으로 보입니다.

이번에도 콜랩에서 작업을 진행했습니다. 궁금하신분은 https://github.com/hypro2/LLM-Multimodal-Colab/blob/main/multimodal/paligemma_3b_mix_224_colab.ipynb 여기서 확인 바랍니다.

read more

멀티모달 리뷰 qresearch의 llama3-vision-alpha 콜랩 구동

LLM RnD 자료를 찾으러 Note에서 일본 LLM 동향을 검색하고 있었는데 qresearch라는 곳에서 llama3로 vision모델을 만들었다는 글을 보았습니다. 그냥 자기 것이 성능이 우수하다 이런 내용이 아닌 만들어서 코드 리뷰하는 문서 였습니다. 생각보다 유익한 내용인거 같아서 따라 구동 해봤습니다.

간단히 코드 구동이 가능합니다. 이 경우에 허깅페이스 레포지토리에서 lama-3-vision-alpha/mm_projector.bin만 들어있는데 그 이외에 파일은 튜닝을 따로 시키지 않은 llama3와 siglip 모델을 사용해서 중간의 projection층을 만들어서 그것만으로 vision 모델을 구현한 것으로 llava와 비슷하게 구현된 것을 볼 수 있었습니다.

read more

Paper 리뷰 Chat Vector 학습된 가중치 매개변수를 더하고 빼는 것으로 사전 학습된 모델에 대화 능력을 부여

LLM 관련 논문중에 재밌는 것을 발견 했습니다. Llama-3-Open-Ko-8B-Instruct-preview의 README를 보던 중 Chat Vector라는 것을 알게 되었습니다. Chat Vector 학습된 가중치 매개변수를 더하고 빼는 것으로 사전 학습된 모델에 대화 능력을 부여해준다는게 흥미로웠습니다.

“With applying the idea from Chat Vector paper, I released Instruction model named Llama-3-Open-Ko-8B-Instruct-preview.” (https://huggingface.co/beomi/Llama-3-Open-Ko-8B-Instruct-preview) 발췌

read more

모델 리뷰 Llama3을 colab에서 실행해보자

Llama 3이란? Llama 3가 공개된지 몇주가 지났지만 드디어 소개드립니다. 그동안 정말 많이 Llama3 가지고 여러 테스트와 파인튜닝 작업을 진행하느라 좀 늦게 가져왔습니다. Llama 3은 현재까지 공개적으로 사용 가능한 가장 능력 있는 LLM(Large Language Model) 중 하나입니다. 이 모델은 현재 8B와 70B의 Base모델과 Instruct 모델이 각각 공개 되어있으며, 추후에 400B 크기의 모델도 공개 예정이라고 합니다. Llama3는 대체로 언어의 다양한 뉘앙스를 이해하며, 번역, 대화 생성 등의 작업에서 뛰어난 성능을 발휘합니다.

read more

모델 리뷰 믹스트랄 8x22B 4bit를 H100에서 구동 해보자

미스트랄 AI가 최신 오픈소스 LLM인 ‘믹스트랄 8x22B’를 공개했습니다! 😊

이 모델은 메타의 ‘라마 2 70B’와 오픈AI의 ‘GPT-3.5’와 비슷한 성능을 자랑해하고 있습니다. 또한, 이 모델은 6만5000개의 토큰 컨텍스트 창과 최대 1760억 개의 매개변수를 가지고 있어서, 이를 위해 ‘희소 전문가 혼합(SMoE)’ 접근 방식을 사용하여 실행 비용과 시간을 크게 줄였습니다.

read more

모델 리뷰 OLMo Bitnet 1B을 colab에서 실행해보자

요즘 화두에 있는 Bitnet 양자화를 직접 구현했다는 NousResearch의 OLMo-Bitnet-1B을 리뷰해볼 예정입니다.
NousResearch에서 제시한 방식으로 실행을 하려고 합니다. 모델 및 실행에 필요한 코드는 레포지토리에 모델과 같이 trust_remote_code=True을 하면 실행 할 수 있습니다. NousResearch에서에서 구현한 BitLinear158 클래스 먼저 살펴 볼 예정입니다.

read more

LLM기반 임베딩 모델, bge 리랭커 모델 'bge-reranker-v2-gemma'

리랭커 모델 소개

이 포스트에서는 ‘bge-m3’를 기반으로 한 ‘리랭커’ 모델을 살펴보겠습니다. 기존의 ‘임베딩’ 모델과는 달리 ‘리랭커’ 모델은 질문과 문서를 입력으로 받아들이고 유사도를 출력합니다.

다른 임베딩 모델과는 달리, 리랭커는 질문과 문서를 입력으로 사용하며, 임베딩 대신 유사도를 직접 출력합니다. 리랭커는 쿼리와 메시지를 입력으로 받으면 관련성 점수를 계산하며, 이 점수는 시그모이드 함수를 사용하여 [0,1] 범위의 부동 소수점 값으로 매핑될 수 있습니다.

read more

The Era of 1-bit LLMs All Large Language Models are in 1.58 Bits

“The Era of 1-bit LLMs: All Large Language Models are in 1.58 Bits” 논문에서 소개된 방법론이 소개되었습니다.

1비트 LLM(1-bit LLM)은 자연어 처리(NLP) 모델의 성능을 개선하려는 시도 중 하나로, 기존의 32비트나 16비트 LLM과는 다른 접근 방식을 취합니다. 이 모델은 모든 파라미터나 가중치를 -1, 0, 1 중 하나의 값으로 양자화하여 구성됩니다. 이렇게 함으로써, 각 파라미터가 더 적은 비트로 표현되어 전체적인 모델 크기를 줄이고 메모리 사용량을 최적화할 수 있습니다.

read more

Fine tuning Optimizations (DoRA, NEFT, LoRA+, Unsloth)

🚀 언어 모델 최적화: 세밀 조정 기술 향상

언어 모델의 세밀 조정 과정을 최적화하는 것은 효율성, 성능 향상 및 오버피팅 완화에 중요성을 더하고 있습니다. 최신 기술 몇 가지를 살펴보겠습니다:

read more

라마 팩토리(LLaMA-Factory)를 통해 LLM 파인 튜닝을 쉽게

LLaMA Factory는 대규모 언어 모델(Large Language Models, LLMs)을 손쉽게 파인 튜닝할 수 있는 프레임워크로 소개됩니다. 이것은 기술적인 이해가 있는 사람이든 없든, 누구에게나 적합합니다. 💡

이 튜토리얼은 어느 정도의 컴퓨팅 파워만 있다면 누구나 LLM 파인 튜닝에 참여할 수 있다는 점을 강조합니다. 💻

이 프레임워크는 다양한 기법인 PPO, DPO, SFT, 리워드 모델링 등을 지원하며, LoRA와 QLoRA 같은 다양한 훈련 방법론도 함께 제공합니다. 📚

LLaMA Factory의 사용 단계를 설명하는 튜토리얼에는 설치, 데이터셋 준비, 모델 선택, 파인 튜닝, 평가, 그리고 훈련된 모델과의 상호작용을 위한 대화 인터페이스 등이 포함됩니다. 🚀🎨📊

read more

모델 리뷰 anthropic의 Claude 3 사용 및 API 사용법

이번에 새로나온 “클로드 3”은 Anthropıc이 개발한 대규모 언어 모델입니다. Anthropic은 인공지능 연구 기업으로 활동 중입니다. OpenAI보다 덜 유명하지만 충분히 강력한 AI를 만들어내는 대단한 기업입니다. 앤트로픽의 말대로는 오픈AI의 ‘GPT-4’와 구글의 ‘제미나이 울트라(Gemini Ultra)’를 능가하는 ‘현존 최강’이라는 주장하고 있습니다. 실제로 사용하기 위한 절차로는 오픈AI와 구글 처럼 API를 통해 일정 요금을 지불해서 사용하는 방식을 취하고 있습니다.

read more

모델 리뷰 야놀자 이브이 콜랩구동 후기

야놀자에서 이브이라는 한글 모델을 출시 했습니다. 해당 모델은 라마2를 기반으로 만들어 진 모델이며 한글이 잘되도록 튜닝을 한 모델로 보입니다. 2.8B 모델과 10.8B 모델 두가지고 존재합니다. Solar를 기반으로 튜닝 했는지 모르겠지만 파라미터가 10.8B를 사용하고 있습니다.

read more

Ollama windows로 langchain함께 쉽게 Local LLM 실행하기

Ollama는 로컬 LLM을 실행하기 복잡한 과정을 쉽게 줄여주는 프로그램입니다. 이제 Ollama가 Windows에서 미리보기로 제공되며, 이를 통해 최신 모델을 간편하게 테스트할 수 있습니다. Windows용 Ollama는 내장 GPU 가속화, 전체 모델 라이브러리 액세스, 그리고 OpenAI 호환성을 갖추고 있습니다. 이제 사용자들은 최신 모델을 손쉽게 활용할 수 있습니다.

read more

langchain과 Jsonformer를 이용해서 function calling 구현하기

langchain과 Jsonformer를 이용해서 function calling 구현하기 https://github.com/1rgs/jsonformer

Jsonformers를 사용하여 function calling을 흉내내는 Language Model (LLM)을 만드는 과정을 자세히 설명하겠습니다.

Jsonformers는 구조화된 데이터에서 많은 토큰이 고정되어 있어 예측 가능한 경우에 적합한 방법입니다. 이 방법은 Hugging Face의 모델을 활용하고, 생성 과정에서 고정된 토큰만을 채우며, 언어 모델에게는 내용 토큰의 생성을 위임합니다.

read more

랭체인 CacheBackedEmbeddings으로 캐시 임베딩 만들기

임베딩은 재계산을 피하기 위해 저장되거나 임시로 캐시될 수 있습니다. 임베딩 캐싱은 CacheBackedEmbeddings를 사용하여 수행할 수 있습니다.

캐시 백드 임베더는 임베딩을 키-값 저장소에 캐시하는 래퍼입니다. 텍스트는 해싱되고 해시가 캐시에서 키로 사용됩니다.

CacheBackedEmbeddings를 초기화하는 주요한 방법은 from_bytes_store입니다.

read more

gemma colab에서 사용하기

새로운 LLM(언어 모델)인 Gemma는 Google이 Gemini를 기반으로 개발한 제품군입니다.

Gemma에는 두 가지 크기의 모델이 있습니다: 2B와 7B. 이 두 가지 크기의 모델은 기본 모델과 명령 모델을 갖추고 있습니다. Gemma의 모든 변형은 양자화를 거치지 않고 다양한 종류의 소비자 하드웨어에서 실행될 수 있으며, 컨텍스트 길이는 8K 토큰입니다.

기본 모델은 프롬프트 형식이 없습니다. 이 모델은 다른 기본 모델과 마찬가지로 합리적인 연속으로 입력 순서를 계속하거나 Zero-Shot/Few-Shot 추론에 활용할 수 있습니다. 또한 사용자의 특정 사용 사례에 맞게 미세 조정할 수 있어 유연성을 제공합니다.

read more

자주쓰지만 기억나지 않는 아나콘다 명령어

기억하기 귀찬아서 매번 검색하게되는데 꼭 필요한 거 같다.

요즘은 도커 써서 콘다를 잘 안쓰게 되는 것 중 하나가 되었다.

실전 압축으로 가져왔다.

read more

VmmemWSL 메모리 부족과 초기화 하는 방법

WSL로 프로그램을 실행하다보면 메모리가 가끔 부족할 때가 있고, 쓰지 않을 때도 메모리를 점유하고 있을 때가 있다. 작업관리자에 들어가면 VmmemWSL이라는 프로세스가 많은 메모리를 사용하고 있고, 이것 조차 가끔 부족할 때가 있다. PC의 메모리를 어느 정도까지 쓸건지 .wslconfig를 생성 해주는 것으로 직접 어느 정도의 메모리를 사용할 지 알려줄 수 있다.

그리고 사용하지 않을 때는 wsl를 shutdown 시켜주므로써 메모리를 반환 받을 수 있는 방법에 대해서 기록 할려고한다.

read more

랭체인을 이용한 리트리버 검색기 활용

리트리버 검색기를 통해서 쿼리에 참조 하기위한 문서를 빠르면서 정확하게 찾기위한 전략을 여러가지 짤 수 있습니다.
LangChain이 제공하는 Retrieval Augmented Generation RAG는 외부 데이터를 검색하고 LLM으로 전달하여 사용자 특정 데이터를 활용하는 방법을 설명합니다.

read more

랭체인의 LCEL 문법

langChain Expression Language (LCEL)는 체인을 쉽게 구성 할 수있는 선언적인 방법입니다

read more

Pydantic Class 란?

https://docs.pydantic.dev/latest/

pydantic은 이제 안사용하는 곳이 없을 정도로 필수 라이브러리가 되었습니다.데이터 클래스와 자료구조 관리에 필수템이 되어 모든 개발자들이 사용하고 있습니다.랭체인에서는 pydantic한 구조 사용은 적극적으로 권장(거의 필수)하며 거의 모든 부분에서 사용되고 있습니다.

read more

OpenAI의 Function Calling의 원리를 알아보자

한 3달전에 캐글에 랭체인을 이용한 라마와 펑션콜링에 대한 주제로 글을 쓴게 있는데 1110뷰를 돌파 했습니다. ㅎㅎ

OpenAI의 function calling은 출시 됬을 때 chatgpt를 이용한 개발자들에게 혁신적인 인기가 있었습니다. 

이번 포스트는 Jsonformer를 통해서 OpenAI의 function calling이 무엇인가? 어떻게 구현 됬는지 알아보려고 합니다.  

read more

멀티모달 리뷰 moondream1 콜랩으로 실행하기

이번에 가져온 멀티모달은 moondream1 입니다. 이것도 phi와 SigLIP를 사용해서 파라미터를 줄이고, llava dataset으로 튜닝 완료된 데이터 입니다. 지난번의 리뷰한 imp와 유사한 모델입니다. 하지만 사용하는 방법에서 차이가 있고 튜닝 된 정도의 차이가 존재합니다. 

1.6B 매개변수 모델은 @vikhyatk가 SigLIP, Phi-1.5 및 LLaVa 훈련 데이터 세트를 사용하여 구축했습니다. 이 모델은 연구 목적으로만 공개되며, 상업적 사용은 허용되지 않습니다.

moondream1은 콜랩에서 사용할때 GPU를 8.5기가 정도 사용하고 있습니다.  imp의 8기가보다 조금더 많은 GPU 연산량을 보여줍니다. 해당 코드를 실행해보겠습니다.

read more

모델 리뷰 멀티모달 MILVLG의 imp-v1-3b 콜랩(colab)에서 실행하기

오늘 모델 리뷰는 멀티 모달 중의 MILVG의 imp입니다. 3b 크기로 상당히 좋은 퀄리티의 멀티 모달 성능을 내고 있습니다. 라바와 비슷한 방식으로 만들어진 거 같고, 이미지 인코더로는 구글의 siglip과 sLLM으로 ms의 phi2가 사용되서 두개 합쳐서 3b 밖에 안되는 크기를 자랑합니다. 양자화가 되지 않은채로 GPU 사용량이 8기가를 넘지 않습니다. 시스템 램 또한 2기가 정도 밖에 되지 않아 가볍게 사용 할 수 있습니다.

read more

모델 리뷰 LLaVA1.5 Colab으로 실행하기

오늘은 예전에 llava 1.5에 대해서 잠깐 언급했었던 적이 있는 모델입니다.LLaVA 1.5는 비전 기능을 갖춘 오픈 소스 모델로서 LLaVA는 대규모 언어 모델과 비전 어시스턴트를 결합하는 것을 목표로 하는 오픈 소스 프로젝트입니다.언어와 이미지를 모두 이해할 수 있는 엔드 투 엔드 멀티모달 모델을 만드는 것이 목표입니다.

read more

모델리뷰 일본어 한국어 잘하는 OrionStarAI의 Orion-14B

‘Orion-14B’는 ‘OrionStarAI’가 개발한 공개된 소스의 다국어 대규모 언어 모델입니다. 이 모델은 중국어, 영어, 일본어, 한국어를 비롯한 2.5T 다국어 코퍼스에서 학습되었으며, 이 언어들에서 우수한 성능을 보여주고 있습니다.

이 모델은 OrionStarAI 의해 개발되었으며, 베이스 모델은 20B 모델 내에서 종합적인 평가에서 뛰어난 성능을 보입니다. 특히, 일본어와 한국어 테스트에서 탁월한 성과를 거두고 있습니다. 롱채팅 버전은 200k 토큰 길이에서 매우 효과적인 성능을 보여주며, 최대 320k까지 지원 가능합니다. 또한, 양자화 버전은 모델 크기가 70% 감소하고 추론 속도가 30% 향상되었으며, 성능 손실은 1% 미만입니다.

이 모델이 상당히 한국어를 잘하는거 같고 빠르기 때문에 번역에 퀄리티가 상당히 높습니다. 

read more

DPO LLM 강화학습법에 대해서

DPO는 RLHF(Reinforcement Learning from Human Feedback)에 의존하지 않고 사용자 선호도 데이터를 직접 사용하여 언어 모델(LM)을 최적화하는 방법입니다.

주요 목표는 고품질 출력을 생성하기 위해 사용자 선호도를 기반으로 언어 모델을 훈련하는 것입니다.
DPO는 강화학습 정책(PPO와 같은 것)을 사용하지 않으면서도(reward 모델링 없이) reward 함수와 기존 정책을 연결하여 인간의 선호 데이터에 최적화할 수 있다고 논문에서 설명합니다.
논문에 따르면 RLHF로 finetuning한 모델과 비교했을 때, DPO는 요약, single-turn 문제에서 더 우수한 성능을 보였습니다.

read more

Efficient Training of Language Models to Fill in the Middle | 논문 리뷰 영상 감상

  1. 대형 언어 모델 소개:
  2. 본 논문에서는 2017년에 소개된 transformer 아키텍처를 기반으로 한 대형 언어 모델의 성공에 대해 논의합니다. 이러한 모델들은 다양한 작업에서 최첨단 성능을 달성하며 읽기 이해, 질문 응답, 논리 추론 및 상식적 추론과 같은 여러 벤치마크에서 우수한 성과를 보입니다.
read more

윈도우환경에서 wsl ubuntu에 도커 설치하기

(설치하고 기억나는 대로 기록한거라서 그대로 따라한다고 될 보장없음)

read more

모델 리뷰 이미지 모델 animagine-xl-3.0

ANIMAGINE XL 3.0 개요

모델 설명:Animagine XL 3.0은 Animagine XL 2.0을 계승하는 고급 오픈 소스 애니메이션 텍스트-이미지 모델입니다.
Cagliostro Research Lab에서 개발한 확산 기반의 텍스트-이미지 생성 모델입니다. Stable Diffusion XL을 사용하여 Cagliostro Research Lab에서 개발했습니다.

read more

tiktoken 및 cl100k_base을 오프라인에서 사용후기

가끔 프로젝트를 하다보면 tiktoken을 오프라인으로 사용해야될 경우가 필요하다.

주로 캐시파일에 저장되기 때문에 시간이 지난다면 tiktoken이 알아서 새롭게 다운 받으려고 하는데… 이 경우 오프라인 PC에서 사용하게 되거나 제한된 인터넷 환경에서는 좀 귀찬게 된다. 

read more

BERTopic v0.16 소개 글

BERTopic v0.16 소개:

오늘은 핸즈온 LLM 책을 집필하고 계시고 BERTopic과 Keybert를 개발 하신 Maarten Grootendorst은 BERTopic의 최신 릴리스를 소개하며 토픽 모델링에 대한 포괄적인 도구로 발전시키는 노력을 소개합니다. 주요 내용으로는 제로샷 토픽 모델링, 사전 훈련된 모델 병합 및 대규모 언어 모델에 대한 강화된 지원과 같은 주요 기능을 다룰 것입니다.

자세한 내용은 유튜브 영상속에 있습니다.

read more

Bert Lora Classification 학습기

오늘은 쉬운거로 Peft를 이용한 LoRA학습기를 또 해보았다. 하지만 이번에는 Bert를 이용한 분류 문제를 가져왔습니다. LoRA는 LLM의 파인튜닝으로 많이 사용되지만 BERT의 클래시피케이션에도 사용가능합니다.

read more

Mixtral이 란?

Mixtral 7bx8는 Mistral 7B와 유사한 구조를 가지고 있지만, Mixture of Experts (MoE)라는 기술을 사용하여 8개의 “전문가” 모델을 하나로 통합한 모델입니다. 트랜스포머 모델에서 MoE가 작동하는 방식은 몇 개의 Feed-Forward 레이어를 희소한 MoE 레이어로 교체하는 것입니다. MoE 레이어에는 어떤 전문가가 어떤 토큰을 가장 효율적으로 처리할지 선택하는 라우터 네트워크가 포함되어 있습니다. Mixtral의 경우, 각 시간 단계마다 두 개의 전문가가 선택되어 모델이 4배 많은 유효 매개변수를 포함하면서도 12B 매개변수 밀도 모델의 속도로 디코딩할 수 있게 합니다.

read more

Gemini Pro API 사용해보기 (Python, Langchain)

제미나이 프로의 API 발급과 사용방법을 알아보고 Python에서 작동하는 것을 보고 랭체인에 적용해보자

read more

랭체인과 라마인덱스 비교

오늘의 할 일은 라마 인덱스(구 GPT 인덱스)와 랭체인에 대한 비교를 진행할 것입니다. 조사해를 해본 자료를 조합하면 대충 아래와 같습니다. 🚀 Langchain은 초기 프로젝트 시작 및 빠른 구현에 적합하며 러닝 커브가 낮음.
💡 llama Index는 데이터 쿼리와 정보 합성에 중점을 두며 복잡한 메모리 관리가 필요한 경우 적합.

read more

벡터 데이터베이스와 벡터 인덱스 Faiss

주로 LLM 관련되서 중장기적인 기억을 담당하는 부분을 수행으로 복합 비정형 데이터를 위해 효율적으로 저장 및 검색을 하기 위해 개발된 데이터베이스 구조

복합 비정형 데이터를 저장하기 위해서는 데이터를 일련의 숫자로 구성된 임베딩으로 변환하는 것이 필요하다. 임베딩을 하는 이유는 한 공간안에 유사한 것은 비슷한 공간에 몰려있다는 것을 전제로 진행한다.

예시 그림 Mnist 3차원같이 한 공간에 표현할 수 있어야 한다. (에 표현한 그림이라서 2차원같지만 3차원)

read more

lora finetuning 후 EOS token이 안나오는 문제

지난번에 LoRA를 학습시키고 EOS 토큰이 나오는 확률이 낮아진거같은데… 어떻게 해결 할 수 있는 방법이 있는가 구글링을 통해서 찾아 보았다. 

read more

llama2에 remon 데이터로 8bit LoRA 학습

간단히 llama2를 통해 remon데이터를 학습시켜서 AI인간 만드는 짓을 하겠다 remon data는 허깅 페이스에서 쉽게 구할 수 있음 nsfw가 없는 클린?한 데이터를 사용합니다.

read more

RLHF 인간 피드백 강화학습 코드분석 (chatllama, stackllama)

정의 : 사람의 피드백을 통해 파인튜닝함으로써 LM을 사용자 의도에 맞게 조정하는 방법이다. InstructGPT, ChatGPT 등에 사용되었다.사람이 직접 평가한 결과, 1.3B의 파라미터를 가진 InstructGPT 모델이 GPT3-175B 모델보다 선호도가 높았다 퍼블릭 NLP 데이터 셋에서 성능 저하를 최소화하면서 진실성이 개선되고, 독성 출력 생성이 줄어들었지만 편향은 줄어들지 않았다 InstructGPT는 단순한 실수를 하지만, 사람의 피드백을 통한 파인튜닝이 언어 모델을 사람의 의도에 맞게 조정하는 데 있어 유망한 방향임을 보여주었다.

read more

AutoGPTQ로 양자화

오늘은 AutoGPTQ로 한글 라마13b 모델을 양자화해볼려고 한다. 오늘도 koalpaca 데이터셋을 사용하려고 한다. 가볍게 데이터셋 프롬프트 형식만 맞춰서 만들어주고…

read more

exllamav2로 exl2형식으로 양자화하기

데이터셋은 준비했고, 모델도 형식에 맞게 변환했고 리눅스에서 명령어로 exl2를 변환해주는 코드를 작성해주면된다.

보면서 따라 했는데도 힘들구먼 결과가 잘나올려나

read more

LLaVA-1.5 이미지 텍스트 멀티모달

LLaVA-1.5는 이미지 분석이 가능한 멀티모달의 오픈소스로서 11개 벤치마크에서 소타를 달성했다.

read more

양자화 모델 실행과 LoRA 파인 튜닝

양자화된 모델 불러오기 양자화된 모델 불러오는 과정은 생각보다 간단하다. 다 AutoGPTQ가 해주기 때문이다. .

read more

AutoGPTQ를 이용한 양자화 하는 방법

양자화는 성능의 정확도 손실에 미치지 않는 범위에서 float32에서 4bit,8bit와 같이 저밀도가 낮은 데이터 타입으로 표현해서 효율적 계산을 수행하도록 하는 방법 주로, 입력을 정량화 상수로 스케일링 하여 입력을 정규화 하는 것으로, 학습이 완료된 가중치에 float 32에서 가중치 min값과 max값이 생기는데 int에 매칭 시켜주므로써 메모리 사용량을 획기적으로 줄여주는 방법 

read more

LLM 기반의 서비스 만들 때

LLM 기반의 서비스 만들 때 LLM을 이용한 서비스를 많을때 필요한 과정을 선택할 때, 다음과 같은 요소들을 고려해야 합니다: 복잡성, 비용, 품질 등.

read more

VLLM 소개

PagedAttention은 vLLM(very Large Language Model)에서 사용되는 기술로, LLM(언어 모델)의 성능을 향상시키기 위한 것입니다. 이 기술의 주요 내용을 간단하게 설명하면 다음과 같습니다

read more

llama2를 context 8k까지 확장하는 방법 RoPE, exllama

해당 부분의 max_seq_len을 늘려주고 compress_pos_emb 혹은 alpha_value를 지정해준 것입니다. 여기서 원래 지원하는 max 시퀀스의 길이를 늘리고 싶은 만큼의 배수를 넣어주면 적용하면 됩니다.  이것이 어떻게 되는 것을 제가 이해하기로는 Position embedding은 Self attention의 포지션에 대한 위치를 기억 시키기 위해 사용이 되는 중요한 요소중 하나 입니다. Llama는 Rotary Position Embedding은 회전행렬을 사용하여 위치에 대한 정보를 인코딩 하는 방식으로 구현되어 있습니다.

read more

nllb200을 이용한 다국어 번역

페이스북에서는 다국어 번역기 모델 nllb를 공개한 적이 있는데 다양한 파라미터와 증류된 모델까지 공개해놨다. 

read more

Transformers를 generator로 만드는 방법

transformers를 쓰면 주로 model.generate()를 쓰게 되는데 이것을 쓰면 모든 토큰이 생성이 끝날때 까지 아무 것도 확인 할 수 없다. streamer 기능을 사용하면 바로바로 생성되는 토큰을 확인 할 수 있고 generator로 만들 수 있는데 이번에는 특히 TextIteratorStreamer를 이용해서 구현할 것이다. 

read more

SSE(서버-사이드 이벤트)를 이용한 Flask 스트리밍 실시간 챗봇을 위한 연습

연습용 자료 첫번째는 오늘 하던 것 간단히 구현해서 업무에 적용시킬 프로젝트에 넣기위해 테스트 겸 만든 코드 SSE(서버-사이드 이벤트)는 클라이언트와 서버 간의 실시간 통신을 위한 웹 기술 중 하나다.

read more