![]() | 이것은이 책의 비공식 저장소입니다. 대형 언어 모델 : 대형 언어 모델 (Apress)에 대한 전략을 적용하고 구현합니다. 이 책은이 저장소의 내용을 기반으로하지만 노트북이 업데이트되고 있으며 새로운 예와 장을 통합하고 있습니다. 원래 노트북과 함께 책의 공식 저장소를 찾고 있다면 Apress Repository를 방문하여 책에 표시된대로 모든 노트북을 원래 형식으로 찾을 수 있습니다. 구매 : [Amazon] [Springer] |
GitHub의 과정에는 책에있는 모든 정보가 포함되어 있지 않습니다.
대형 언어 모델과 그 응용 프로그램에 대한이 실용적인 무료 손은 ?? 영구 개발 ??. 나는 다른 수업과 샘플을 완성 할 때 게시 할 것입니다.
이 과정은 OpenAI 및 Hugging Face Library의 모델을 사용하여 실습 경험을 제공합니다. 우리는 획득 한 새로운 지식을 적용 할 수 있으므로 성장할 작은 프로젝트를 통해 많은 도구와 연습을보고 사용합니다.
이 섹션에서 다루는 일부 주제 및 기술에는 챗봇, 코드 생성, OpenAI API, Hugging Face, Langchain, Fine Tuning, PEFT 미세 튜닝, 소프트 프롬프트 튜닝, LORA, QLORA, 모델 평가, 지식 증류가 포함됩니다.
각 수업은 노트와 기사로 준수됩니다. 노트북에는 코드 내에서 코드를 이해하기에 충분한 정보가 포함되어 있으며,이 기사는 코드와 다루는 주제에 대한 자세한 설명을 제공합니다.
저의 조언은 노트북과 함께 기사를 열고 따라가는 것입니다. 많은 기사는 노트북을 소개 할 수있는 변형에 대한 작은 팁을 제공합니다. 개념의 명확성을 향상시키기 위해 그들을 따라가는 것이 좋습니다.
대부분의 노트북은 Colab에서 호스팅되며 일부는 Kaggle에 있습니다. Kaggle은 Colab에 비해 무료 버전에서 더 많은 메모리를 제공하지만 노트북 복사 및 공유는 Colab에서 더 간단하지만 모든 사람이 Kaggle 계정을 가지고있는 것은 아닙니다.
일부 노트북은 Colab의 무료 버전보다 더 많은 기억이 필요합니다. 우리가 큰 언어 모델로 작업 할 때, 이것은 당신이 그들과 계속 협력하면 재발하는 일반적인 상황입니다. 자신의 환경에서 노트북을 실행하거나 Colab의 프로 버전을 선택할 수 있습니다.
각 노트북에는 코드가 자세히 설명 된 중간 기사가 포함되어 있습니다.
이 과정의 첫 번째 섹션에서는 두 개의 작은 프로젝트를 만들어 OpenAI API와 협력하는 법을 배웁니다. 우리는 OpenAI의 역할과 우리가 원하는대로 행동하도록 프롬프트를 통해 모델에 필요한 지침을 제공하는 방법을 탐구 할 것입니다.
첫 번째 프로젝트는 모델이 고객 주문을받는 식당 챗봇입니다. 이 프로젝트를 바탕으로 SQL 명령문 생성기를 구성 할 것입니다. 여기서 우리는 SQL Creation 명령 만 허용하는 안전한 프롬프트를 만들려고 시도합니다.
우리는 OpenAi GPT-3.5 및 패널을 사용하여 패스트 푸드 레스토랑을위한 간단한 챗봇을 개발할 것입니다. 이 과정에서 우리는 다양한 개방 역할 이해, 온도 설정 조작 및 신속한 주입을 피하는 방법을 포함하여 신속한 엔지니어링의 기본 사항을 탐색 할 것입니다.
| 기사 패널 / 기사 Gradio | 노트북 패널 / 노트북 Gradio |
|---|
이전 기사에서 사용 된 것과 동일한 프레임 워크를 따라 챗봇을 만들기 위해 SQL 번역기에게 자연 언어를 개발하기 위해 몇 가지 수정을했습니다. 이 경우 모델에 테이블 구조와 함께 제공되어야하며, 원활한 기능을 보장하고 잠재적 오작동을 피하기 위해 프롬프트를 조정했습니다. 이러한 수정을 통해 번역기는 자연어 쿼리를 SQL 쿼리로 변환 할 수 있습니다. @fmquaglia는 DBML을 사용하여 노트북을 만들기 위해 원본보다 더 aproach라는 테이블을 설명했습니다.
| 기사 / 기사 Gradio | 노트북 / 노트북 Gradio / Notebook DBML |
|---|
우리는 모델에서 얻은 결과를 개선하기 위해 신속한 엔지니어링 기술을 탐색 할 것입니다. 몇 가지 샷 샘플을 사용하여 답을 포맷하고 구조화 된 응답을 얻는 방법과 같습니다.
| 기사 | 공책 |
|---|
벡터 데이터베이스에 대한 간단한 소개, 코스 전반에 걸쳐 많은 교훈으로 우리와 함께 제공되는 기술. 우리는 ChromADB에 저장된 다양한 뉴스 데이터 세트의 정보를 사용하여 검색 증강 생성의 예를 다룰 것입니다.
대형 언어 모델의 세계에서 중요한 측면이 중요하다면 독점 정보를 활용하는 방법을 모색하고 있습니다. 이 수업에서는 벡터 데이터베이스에 정보를 저장하고,이 경우 ChromADB에 정보를 저장하고이를 사용하여 풍부한 프롬프트를 만드는 가능한 솔루션을 살펴 봅니다.
| 기사 | 공책 |
|---|
우리는 이전에 유사한 질문이 있는지 여부를 결정할 수있는 시맨틱 캐시 계층을 도입하여 Rag 시스템을 향상 시켰습니다. 긍정적 인 경우 벡터 데이터베이스에 액세스하는 대신 FAISS로 생성 된 캐시 시스템에서 정보를 검색합니다.
이 노트북에 존재하는 시맨틱 캐시의 영감과 기본 코드는 hamza farooq의 https://maven.com/boring-bot/advanced-llm/1/home 덕분에 존재합니다.
| 기사 | 공책 |
|---|---|
| 물티 | 공책 |
Langchain 은이 혁명에 가장 많이 기여한 대형 언어 모델의 우주에서 도서관 중 하나였습니다. 이를 통해 모델 및 기타 시스템에 대한 통화를 체인하여 대형 언어 모델을 기반으로 응용 프로그램을 구축 할 수 있습니다. 이 과정에서는 여러 번 사용하여 점점 더 복잡한 프로젝트를 만들 것입니다.
이 수업에서는 Langchain을 사용하여 이전 수업에서 노트북을 향상 시켰으며, 여기서 두 데이터 세트의 데이터를 사용하여 풍부한 프롬프트를 만듭니다. 이번에는 Langchain의 도움으로 벡터 데이터베이스에서 데이터를 검색하여 언어 모델로 전달하는 파이프 라인을 구축했습니다. 노트북은 두 개의 다른 데이터 세트와 두 가지 모델로 작동하도록 설정되었습니다. 모델 중 하나는 텍스트 생성에 대한 교육을 받고 다른 하나는 Text2Text Generation을 위해 교육을 받았습니다.
| 기사 | 공책 |
|---|
Langchain으로 구축 된 2 모델 파이프 라인을 사용하여 댓글 응답 시스템을 만들 것입니다. 이 설정에서 두 번째 모델은 첫 번째 모델에 의해 생성 된 응답을 조정하는 데 책임이 있습니다.
시스템이 원치 않는 응답을 생성하지 못하도록하는 효과적인 방법 중 하나는 사용자와 직접적인 상호 작용이없는 두 번째 모델을 사용하여 응답 생성을 처리하는 것입니다.
이 접근법은 사용자의 입력에 대한 응답으로 첫 번째 모델에 의해 생성 된 바람직하지 않은 응답의 위험을 줄일 수 있습니다.
이 작업을 위해 별도의 노트북을 만들 것입니다. 하나는 OpenAI의 모델을 포함하고 다른 하나는 포옹으로 제공되는 오픈 소스 모델을 사용합니다. 세 노트에서 얻은 결과는 매우 다릅니다. 이 시스템은 OpenAI 및 LLAMA2 모델에서 훨씬 더 잘 작동합니다.
| 기사 | 공책 |
|---|---|
| Openai 기사 | Openai 노트북 |
| llama2-7b 기사 | LLAMA2-7B 노트북 |
| 기사가 없습니다 | GPT-J 노트북 |
에이전트는 대형 언어 모델 세계에서 가장 강력한 도구 중 하나입니다. 에이전트는 예상 결과를 달성 할 때까지 사용자의 요청을 해석하고 도구 및 라이브러리를 처분 할 수 있습니다.
Langchain 에이전트를 사용하면 가장 간단하지만 믿을 수 없을 정도로 강력한 에이전트 중 하나만 몇 줄만 만들 것입니다. 에이전트는 데이터 분석가 보조원 역할을하며 Excel 파일에 포함 된 데이터를 분석하는 데 도움이됩니다. 트렌드를 식별하고 모델 사용, 예측을 할 수 있습니다. 요약하면, 우리는 데이터를 분석하기 위해 매일 작업에서 사용할 수있는 간단한 에이전트를 만들 것입니다.
| 기사 | 공책 |
|---|
이 예에서는 이전에 본 두 가지 기술이 결합되어 있습니다 : 에이전트 및 벡터 데이터베이스. 의료 정보는 ChromADB에 저장되며 Langchain 에이전트가 생성되며,이를 통해 사용자의 질문에 답변하기 위해 모델로 전송 될 풍부한 프롬프트를 만들어야 할 때만 가져올 것입니다.
다시 말해, 의료용 챗봇을 돕기 위해 래그 시스템이 만들어졌습니다.
주목!!! 예제로만 사용하십시오. 아무도 진짜 의사의 권장 사항을 부팅 권장 사항을 취하지 않아야합니다. 나는 챗봇에 제공 될 수있는 사용에 대한 모든 책임을 부인합니다. 나는 다른 기술의 예로 만 만들었습니다.
| 기사 | 공책 |
|---|
대형 언어 모델의 성능을 측정하는 데 사용되는 메트릭은보다 전통적인 모델에서 사용했던 것과는 상당히 다릅니다. 우리는 정확도, F1 점수 또는 리콜과 같은 메트릭에서 멀어지고 Bleu, Rouge 또는 Meteor와 같은 메트릭으로 이동합니다.
이러한 메트릭은 언어 모델에 할당 된 특정 작업에 맞게 조정됩니다.
이 섹션에서는 이러한 메트릭 중 여러 가지 예제와이를 사용하여 한 모델이 주어진 작업에 대해 다른 모델보다 우수한 지 여부를 결정하는 방법을 살펴 봅니다. 우리는 이러한 메트릭이 다른 모델의 성능에 대한 정보에 근거한 결정을 내리는 데 도움이되는 실용적인 시나리오를 살펴볼 것입니다.
Bleu는 번역의 품질을 평가하기 위해 사용 된 최초의 메트릭 중 하나입니다. 노트북에서 우리는 Google의 번역 품질을 Hugging Face의 오픈 소스 모델과 비교합니다.
| 기사 WIP | 공책 |
|---|
우리는 언어 모델에 의해 생성 된 요약 품질을 측정하기 위해 Rouge Metric의 사용법을 탐색 할 것입니다. 우리는 두 개의 T5 모델을 사용합니다. 그 중 하나는 T5-베이스 모델이고 다른 하나는 요약을 만들기 위해 특별히 설계된 T5-베이스 미세 조정되었습니다.
| 기사 | 공책 |
|---|
이 초기 예에서는 Langsmith를 사용하여 에이전트를 구성하는 다양한 구성 요소 간의 트래픽을 모니터링하는 방법을 관찰 할 수 있습니다. 에이전트는 벡터 데이터베이스를 사용하여 풍부한 프롬프트를 구성하고 모델로 전달하는 RAG 시스템입니다. Langsmith는 에이전트의 도구 사용과 모델에 의한 결정을 모두 캡처하여 전송/수신 데이터, 소비 된 토큰, 쿼리 기간 및이 모든 것에 대한 정보를 사용자 친화적 인 환경에서 항상 제공합니다.
| 기사 | 공책 |
|---|
이전에는 노트북, Rouge Metrics : 요약 평가를 평가하여 Rouge를 사용하여 인간이 만든 요약에 가장 적합한 요약을 평가하는 방법을 배웠습니다. 이번에는 삽입 거리와 Langsmith를 사용하여 참조와 유사한 요약을 생성하는 모델을 확인합니다.
| 기사 | 공책 |
|---|
우리는 의료 보조원으로 기능하는 대리인을 데려 가서 Giskard를 통합하여 응답이 올바른지 평가합니다. 이러한 방식으로 모델의 응답뿐만 아니라 벡터 데이터베이스의 정보 검색도 평가됩니다. Giskard는 완전한 걸레 솔루션을 평가할 수있는 솔루션입니다.
| 기사 | 공책 |
|---|
Eleutherai의 LM-Eval Library는 업계 표준이 된 학업 벤치 마크에 쉽게 액세스 할 수 있습니다. OpenAI와 같은 제공 업체의 오픈 소스 모델과 API의 평가를 지원하며 LORA와 같은 기술을 사용하여 생성 된 어댑터의 평가도 가능합니다.
이 노트북에서는 도서관의 작지만 중요한 기능에 중점을 둘 것입니다. Hugging Face의 Transformers 라이브러리와 호환되는 모델 평가.
| 기사 - WIP | 공책 |
|---|
Finetuning & Optimization Section에서는 Prompt Fine Tuning 또는 LORA와 같은 다양한 기술을 탐색하며 Hugging Face PEFT 라이브러리를 사용하여 대형 언어 모델을 효율적으로 미세 조정합니다. 우리는 모델의 무게를 줄이기 위해 양자화와 같은 기술을 탐색 할 것입니다.
이 노트북에서는 PEFT 라이브러리에서 프롬프트 튜닝을 사용하여 두 가지 모델이 교육됩니다. 이 기술을 사용하면 매개 변수가 거의없는 가중치를 수정하여 훈련 할 수있을뿐만 아니라 동일한 기초 모델을 사용하는 메모리에 다른 특수 모델을로드 할 수 있습니다.
프롬프트 튜닝은 추가 기술이며 미리 훈련 된 모델의 가중치는 수정되지 않습니다. 이 경우 우리가 수정 한 가중치는 프롬프트에 추가하는 가상 토큰의 가중치입니다.
| 기사 | 공책 |
|---|
미세 조정 기술 Lora의 작동 방식에 대한 간략한 설명을 한 후, 우리는 Bloom Family의 모델을 미세 조정하여 큰 언어 모델을 지시하는 데 사용할 수있는 프롬프트를 구성하도록 가르 칠 것입니다.
| 기사 | 공책 |
|---|
우리는 대형 언어 모델의 크기를 줄이는 데 사용되는 양자화에 대한 간단한 소개를 보게 될 것입니다. 양자화를 사용하면 큰 모델을로드하여 필요한 메모리 자원을 줄일 수 있습니다. 또한 미세 조정 프로세스에 적용되며 모든 리소스를 소비하지 않고 단일 GPU로 모델을 미세 조정할 수 있습니다. 간단한 설명 후에 Google Colab에서 T4 16GB GPU를 Bloom 7B 모델을 미세 조정할 수있는 방법에 대한 예를 보게됩니다.
| 기사 | 공책 |
|---|
이 섹션은 여전히 건설 중입니다. 목표는 Microsoft, Google, NVIDIA 또는 OpenAI와 같은 현장의 주요 회사가 사용하는 것과 동일한 기술을 사용하여 모델을 구축하기 위해 모델을 만들기 위해 가장 간단한 가지 치기 기술에서 모델을 만들 수있는 커리큘럼을 구축하는 것입니다.
첫 번째 노트북에서 가지 치기 프로세스는 DistilGPT2 모델의 피드 포워드 층에 적용됩니다. 이는 모델이 특정 층에서 가중치가 줄어든다는 것을 의미합니다. 자두의 뉴런은 중요도 점수에 따라 선택되며, 이는 가중치의 L1 규범을 사용하여 계산합니다. 이 첫 번째 예제에서는 모든 영역에서 기본 모델을 모방하는 가지 치기 모델을 만들 때 사용할 수있는 간단한 aproach입니다.
모델의 구조를 변경함으로써 transformers 라이브러리에서 올바르게 작동하도록 새로운 구성 파일을 작성해야합니다.
| 노트북 : distilgpt2 모델을 가지 치기. |
|---|
이 첫 노트북에서는 DistilGPT2 모델과 함께 사용 된 가지 치기 프로세스를 복제하지만 LLAMA 모델에 적용하려고합니다. 모델의 특성을 고려하지 않음으로써 가지 치기 프로세스는 완전히 사용할 수없는 모델을 초래합니다. 이 노트북은 가지 치기를 겪을 모델의 구조를 아는 것이 얼마나 중요한지 이해하는 운동 역할을합니다.
| 노트북 : LLAMA3.2 모델을 가지 치기 잘못된 aproach. |
|---|
두 번째 노트북은 DistilGPT2에 사용 된 것과 동일한 가지 치기 프로세스를 LLAMA 모델에 적용 할 때 발생하는 문제를 해결합니다.
올바른 접근법은 모델의 MLP 층을 개별 층이 아닌 쌍으로 처리하고 두 층을 함께 고려하여 뉴런 중요성을 계산하는 것입니다. 또한 최대 절대 중량을 사용하여 가지 치기 층에 어떤 뉴런이 남아 있는지 결정합니다.
| 가지 치기 llama3 기사 | 노트북 : llama3.2 모델을 정리합니다. 올바른 aproach. |
|---|
이 노트북에서는 모델에서 전체 레이어를 제거하는 것과 관련된 깊이 가지 치기의 예를 살펴 봅니다. 가장 먼저 주목해야 할 것은 변압기 모델에서 전체 레이어를 제거하는 것이 일반적으로 모델의 성능에 큰 영향을 미친다는 것입니다. 이것은 이전 예에서 볼 수 있듯이 MLP 층에서 뉴런을 간단하게 제거하는 것과 비교하여 훨씬 더 과감한 건축 변화입니다.
| 노트북 : 깊이 가지 치기 라마 모델. |
|---|
이 간단한 초기 프로젝트에서 우리는 자연어에서 SQL 생성기를 개발할 것입니다. 우리는 Azure에서 실행되는 OpenAI 모델을 사용하고 다른 하나는 Hugging Face의 오픈 소스 모델을 사용하여 두 가지 솔루션을 구현하라는 프롬프트를 만들어내는 것으로 시작합니다.
| 기사 | 공책 |
|---|---|
| OpenAI에 대한 NL2SQL 프롬프트를 만듭니다 | OpenAi의 신속한 생성 |
| 물티 | Defog/SqlCoder를위한 프롬프트 생성 |
| 추론 azure 구성. | Azure 추론 지점 사용 |
이 작은 프로젝트에서는 DPO와 Microsoft-Phi-3 모델을 정렬하는 새로운 모델을 만들어 포옹 얼굴에 게시합니다.
| 기사 | 공책 |
|---|---|
| 물티 | DPO A PHI3-3 모델과 정렬. |
이 초기 솔루션에서는 대형 데이터베이스에서 작동 할 수있는 NL2SQL 시스템을위한 아키텍처를 설계합니다. 이 시스템은 2 ~ 3 개의 다른 모델과 함께 사용되도록 고안되었습니다. 실제로, 우리는 예에서 세 가지 모델을 사용합니다.
빠른 프로젝트 킥오프를 가능하게하는 아키텍처로 데이터베이스에서 몇 개의 테이블에만 서비스를 제공하여 페이스에 더 많은 테이블을 추가 할 수 있습니다.
이 솔루션에서는 금융 산업의 고객 위험 평가 및 제품 추천에서 임베딩 및 대형 언어 모델 (LLMS)의 변형력을 탐색합니다. 우리는 고객 정보를 저장하는 형식을 변경할 것이며, 결과적 으로이 정보가 시스템 내에서 어떻게 이동하는지 변경하여 중요한 장점을 달성 할 것입니다.
문제를 발견하면 문제를여십시오. 가능한 한 빨리 고치고 신용을 제공하기 위해 최선을 다하겠습니다.
공헌하거나 주제를 제안하려면 주저하지 말고 토론을 시작하십시오. 나는 의견이나 조언을 받게되어 기쁩니다.
부끄러워하지 말고 소셜 네트워크의 과정을 친구들과 공유하십시오. LinkedIn 또는 Twitter에서 저와 연결하고 원하는 것을 공유하거나 질문을하십시오.
리포지토리에 별 슬을 줘. 그것은 많은 도움이되고, 계속해서 수업을 추가하도록 격려합니다. 이와 같은 무료 오픈 소스 코스를 지원하는 좋은 방법입니다.
Tom Kocmi, Christian Federmann, 대형 언어 모델은 번역 품질의 최첨단 평가자입니다. LLMS로 LLMS 평가.
Pere Martra, OpenAi가있는 대형 언어 모델 소개
반응 : 언어 모델에서 시너지 효과와 행동. 랑케인 및 에이전트 섹션. 의료 보조 샘플.
매개 변수 효율적인 프롬프트 튜닝을위한 스케일의 전력. 미세 튜닝 및 최적화 섹션. 프롬프트 튜닝 샘플.
LORA : 대형 언어 모델의 낮은 순위 적응. 미세 튜닝 및 최적화 섹션. 로라 미세 조정 샘플.
Qlora : 양자화 된 LLM의 효율적인 양조. 미세 튜닝 및 최적화 섹션. Qlora 미세 조정 샘플.
텍스트 간 SQL을위한 LLM을 자극하는 방법 : 제로 샷, 단일 도메인 및 크로스 도메인 설정에 대한 연구. 프로젝트. SQL에 대한 자연 언어.
Saurav Muralidharan, Sharath Turuvekere Sreenivas, Raviraj Joshi, Marcin Choochowski, Mostofa Patwary, Mohammad Shoeybi, Bryan Catanzaro, Jan Kautz, Pavlo Molchanov, "Arxiv Preciv : 2407.146. https://doi.org/10.48550/arxiv.2407.14679에서 구할 수 있습니다.