나는 12권의 책을 손으로 요약하기 시작했고 각 요약을 작성하는 데 몇 주가 걸릴 것이라는 사실을 깨달았습니다. 그러다가 나는 이 AI 혁명이 일어나고 있다는 것을 기억하고 이 물에 뛰어들기 때문에 오래 전의 일이라고 결정했습니다.
큰 텍스트를 요약하기 위해 LLM(대형 언어 모델) 사용을 탐색하기 시작했을 때 이를 수행하는 방법에 대한 명확한 방향을 찾지 못했습니다 .
이 가이드는 위에 언급된 변수의 세부 사항을 결정하고 테스트하는 과정에 대한 몇 가지 구체적인 내용을 제공합니다.
GitHub에서 전체 순위 데이터, 연습 및 결과 요약을 찾아보세요 .
이러한 용어 중 일부는 상황에 따라 다른 방식으로 사용됩니다(말장난 의도 없음).
LLM(대형 언어 모델) : (AKA 모델) 인간의 언어를 이해하고 생성하기 위해 대규모 데이터 세트를 기반으로 훈련된 인공 지능의 한 유형입니다.
예 : 전 세계를 강타한 OpenAI의 GPT3.5와 GPT4. (우리의 경우 Hugging Face 에서 찾을 수 있는 오픈 소스 또는 무료로 다운로드할 수 있는 모델 중에서 선택합니다.)
검색 증강 생성(RAG) : Meta AI가 개발한 기술로 LLM이 검색하여 특정 사용자 쿼리(문서 Q/A)에 대한 답변을 찾는 데이터베이스에 문서를 저장합니다.
사용자 지침: (AKA 프롬프트 또는 컨텍스트)는 사용자가 제공하는 쿼리입니다.
예: “다음 텍스트를 요약하세요: { text }
”
시스템 프롬프트: 사용자 프롬프트 전에 제공되는 특별 지침으로, 어시스턴트의 성격을 형성하는 데 도움이 됩니다.
예: “당신은 유용한 AI 도우미입니다.”
컨텍스트: 사용자 지침, 가능한 경우 시스템 프롬프트, 이전 라운드의 질문/답변 쌍. (이전 Q/A 쌍을 간단히 컨텍스트라고도 합니다.)
프롬프트 스타일 : 이는 사용자 지침, 시스템 프롬프트 및 이전 질문의 컨텍스트 간의 차이를 인식하기 위해 LLM이 교육받은 특수 문자 조합입니다.
예: <s>[INST] {systemPrompt} [INST] [INST] {previousQuestion} [/INST] {answer} </s> [INST] {userInstructions} [/INST]
7B: 주어진 모델의 매개변수 수를 나타냅니다(일반적으로 높을수록 좋습니다). 매개변수는 모델이 학습 중에 학습하고 예측을 수행하는 데 사용되는 내부 변수입니다. 내 목적에 따르면 7B 모델은 12GB VRAM이 있는 내 GPU에 적합할 것 같습니다.
GGUF: 소비자 하드웨어(CPU/GPU)용으로 설계된 LLM의 특정 형식입니다. 관심 있는 모델이 무엇이든 PrivateGPT에서 사용하려면 해당 GGUF 버전(일반적으로 TheBloke 에서 제작)을 찾아야 합니다.
Q2-Q8 0, K_M 또는 K_S: GGUF 저장소의 파일을 탐색할 때 동일한 모델의 다른 버전을 볼 수 있습니다. 숫자가 높을수록 압축률이 낮아지고 품질이 좋아집니다. K_M의 M은 "중간"을 의미하고 K_S의 S는 "소형"을 의미합니다.
VRAM: GPU의 메모리 용량입니다. GPU에 완전히 로드하려면 사용 가능한 VRAM보다 작은 크기의 모델이 필요합니다.
토큰: 이것은 LLM이 언어의 무게를 측정하는 측정항목입니다. 각 토큰은 대략 4개의 문자로 구성됩니다.
PrivateGPT(pgpt)는 사용자가 집에서 자체 하드웨어로 LLM을 사용할 수 있도록 사용자 인터페이스와 프로그래밍 가능한 API를 제공하는 오픈 소스 프로젝트 입니다. RAG 지원 문서 Q/A를 위해 자신의 로컬 데이터베이스에 문서를 업로드할 수 있습니다.
PrivateGPT는 개인 상황 인식 AI 애플리케이션을 구축하는 데 필요한 모든 구성 요소가 포함된 API를 제공합니다. API는 OpenAI API 표준을 따르고 확장하며 일반 응답과 스트리밍 응답을 모두 지원합니다. 즉, 도구 중 하나에서 OpenAI API를 사용할 수 있으면 코드 변경 없이 자체 PrivateGPT API를 대신 사용할 수 있으며,
local
모드에서 privateGPT를 실행하는 경우 무료로 사용할 수 있습니다.
저는 PrivateGPT UI\RAG를 사용하여 책 장에 대한 질문부터 시작했습니다.
그런 다음 요약을 위해 텍스트를 미리 선택해 보았습니다. 이것이 내 결과가 얼마나 큰 차이를 보일지 알아보기 위한 1라운드 순위의 영감이었습니다. (미리 선택된 섹션을 요약합니다.)
다음으로 저는 어떤 모델이 이 작업에 가장 적합한지 찾고 싶었고, 그 결과 2라운드 순위가 결정되었고 Mistral-7B-Instruct-v0.2가 확실한 승자가 되었습니다.
그런 다음 프롬프트 스타일의 순위를 지정하고 예상되는 정확한 프롬프트 스타일을 얻기 위한 코드를 작성하여 이 모델에서 최상의 결과를 얻고 싶었습니다.
물론 그 후에는 어떤 시스템이 가장 잘 작동하는지 확인하기 위해 다양한 시스템 프롬프트를 테스트해야 했습니다.
다음으로, 최소한의 사후 처리가 필요한 요약을 생성하는 데 가장 적합한 프롬프트가 무엇인지 결정하기 위해 몇 가지 사용자 프롬프트를 시도했습니다.
궁극적으로 이러한 유형의 테스트는 각 LLM에 대해 수행되어야 하며 프로세스 개선의 효과를 확인하기 위해 수행되어야 합니다. 제 생각에는 각 모델이 가장 이상적인 조건을 목표로 삼은 후에야 서로 적절하게 순위를 매길 수 있습니다.
다양한 LLM 변형 테스트를 시작했을 때 mistral-7b-instruct-v0.1.Q4_K_M.gguf
PrivateGPT 기본 설정(CPU에서 실행되도록 만들어짐)의 일부로 제공되었습니다. 여기서는 Q8_0 변형을 선호했습니다.
동일한 작업에 대해 50개 이상의 서로 다른 LLM을 시도했지만 Mistral-7B-Instruct가 여전히 최고 중 하나입니다. 특히 v0.2가 출시된 이후로 더 나은 것을 찾지 못했습니다.
TLDR: Mistral-7B-Instruct-v0.2 - 현재 요약 작업의 리더입니다.
Q/A를 하면서 저는 작은 양의 데이터를 데이터베이스에 업로드하고 매번 깨끗한 상태로 시작할 때 훨씬 더 나은 결과를 얻을 수 있다는 것을 빨리 깨달았습니다. 그래서 저는 Q/A 목적으로 PDF를 여러 장으로 나누기 시작했습니다.
첫 번째 분석을 위해 다음 작업에 대해 5가지 LLM을 테스트했습니다.
모델 | 평가 | 검색 정확도 | 캐릭터 | 초 | 학사 | 필러 | 짧은 | 좋은 학사 |
---|---|---|---|---|---|---|---|---|
헤르메스-트리스메기스토스-미스트랄-7b | 68 | 56 | 62141 | 298 | 삼 | 4 | 0 | 6 |
신시아-7b-v2.0 | 63 | 59 | 28087 | 188 | 1 | 7 | 7 | 0 |
미스트랄-7b-지시-v0.1 | 51 | 56 | 21131 | 144 | 삼 | 0 | 17 | 1 |
집단인지-v1.1-mistral-7b | 56 | 57 | 59453 | 377 | 삼 | 10 | 0 | 0 |
카이-7b-지시 | 44 | 56 | 21480 | 117 | 5 | 0 | 18 | 0 |
첫 번째 라운드에서는 장의 내용을 다양한 섹션으로 나눴습니다.
각각 900~14000자(또는 225~3500개 토큰)
참고: 수많은 대규모 컨텍스트 모델이 출시되었음에도 불구하고 현재로서는 더 작은 컨텍스트가 더 나은 요약을 제공한다고 믿습니다. 나는 요약 작업당 2750개 토큰(11000자)을 초과하는 것을 선호하지 않습니다.
당연히 요약은 Q/A보다 성능이 훨씬 뛰어났지만 더 세밀하게 타겟팅된 컨텍스트도 있었습니다.
이름 | 점수 | 생성된 캐릭터 | OG와의 % 차이 | 생성하는 데 몇 초 | 짧은 | 쓰레기 | 학사 | 채우다 | 질문 | 상세한 |
---|---|---|---|---|---|---|---|---|---|---|
헤르메스-트리스메기스토스-미스트랄-7b | 74 | 45870 | -61 | 274 | 0 | 1 | 1 | 삼 | 0 | 0 |
신시아-7b-v2.0 | 60 | 26849 | -77 | 171 | 7 | 1 | 0 | 0 | 0 | 1 |
미스트랄-7b-지시-v0.1 | 58 | 25797 | -78 | 174 | 7 | 2 | 0 | 0 | 0 | 0 |
카이-7b-지시 | 59 | 25057 | -79 | 168 | 5 | 1 | 0 | 0 | 0 | 0 |
집단인지-v1.1-mistral-7b | 31 | 29509 | -75 | 214 | 0 | 1 | 1 | 2 | 17 | 8 |
Google Docs 또는 GitHub: QA Scores , Summary Rankings 에서 전체 데이터와 순위를 찾아보세요.
이번에도 저는 7B 모델의 Q8 버전을 선호합니다.
Mistral 7b Instruct v0.2가 출시되었다는 사실은 새로운 테스트를 시도해 볼 가치가 충분히 있었습니다.
나는 또한 프롬프트 스타일을 테스트하기로 결정했습니다. PrivateGPT는 Mistral 프롬프트와 함께 패키지로 제공되지 않았으며 Mistral 프롬프트는 Llama2 프롬프트와 유사하지만 기본(llama-index) 프롬프트를 사용하면 더 나은 성능을 발휘하는 것 같습니다.
요약만, Q/A는 책 요약에 효율성이 떨어집니다.
모델 | % 차이점 | 점수 | 논평 |
---|---|---|---|
신시아 7b V2 | -64.43790093 | 28 | 좋은 |
Mistral 7b Instruct v0.2(기본 프롬프트) | -60.81878508 | 33 | VGood |
Mistral 7b Instruct v0.2(Llama2 프롬프트) | -64.5871483 | 28 | 좋은 |
테스 7b v1.4 | -62.12938978 | 29 | 덜 구조화된 |
라마 2 7b 32k 지시(기본값) | -61.39890553 | 27 | 덜 구조화됨. 느린 |
Google Docs 또는 GitHub 에서 전체 데이터와 순위를 찾아보세요.
이전 라운드에서는 Mistral 7b Instruct v0.2가 llama2보다 기본 프롬프트에서 훨씬 더 나은 성능을 발휘한다는 것을 확인했습니다.
실제로 미스트랄 프롬프트는 llama2와 상당히 유사하지만 완전히 동일하지는 않습니다.
system: {{systemPrompt}} user: {{userInstructions}} assistant: {{assistantResponse}}
<s> [INST] <<SYS>> {{systemPrompt}} <</SYS>> {{userInstructions}} [/INST]
<s>[INST] {{systemPrompt}} [/INST]</s>[INST] {{userInstructions}} [/INST]
default
, llama2
프롬프트 스타일을 사용하여 출력 테스트를 시작했습니다 . 다음으로 나는 mistral 템플릿을 코딩하는 작업에 착수했습니다.
그 순위의 결과는 내가 올바르게 코딩했다는 자신감을 갖게 해주었습니다.
프롬프트 스타일 | % 차이점 | 점수 | 메모 |
---|---|---|---|
미스트랄 | -50% | 51 | 완벽한! |
기본값(라마-색인) | -42% | 43 | 잘못된 제목 |
라마2 | -47% | 48 | 구조 없음 |
Google Docs 또는 GitHub 에서 전체 데이터와 순위를 찾아보세요.
프롬프트 스타일을 입력한 후 몇 가지 다른 시스템 프롬프트를 시도했고 그 결과에 놀랐습니다!
이름 | 시스템 프롬프트 | 변화 | 점수 | 논평 |
---|---|---|---|---|
없음 | | -49.8 | 51 | 완벽한 |
기본 프롬프트 | 당신은 도움이 되고 정중하며 정직한 조수입니다. \n항상 최대한 도움이 되도록 답변하고 제공된 모든 지침을 따르세요. \n정보를 추측하거나 꾸며내지 마세요. \n주어진 지침이나 컨텍스트를 참조하지 마십시오." | -58.5 | 39 | 덜 좋은 |
내 프롬프트1 | "당신은 사랑받습니다. 요약, 개요 및 구조화의 전문가로 활동하십시오. \n당신의 글쓰기 스타일은 유익하고 논리적이어야 합니다." | -54.4 | 44 | 덜 좋은 |
단순한 | "당신은 유용한 AI 비서입니다. 출력의 일부로 사용자 지침이나 시스템 컨텍스트를 포함하지 마십시오." | -52.5 | 42 | 덜 좋은 |
결국 Mistral 7b Instruct v0.2가 시스템 프롬프트 없이 요약에 가장 적합하다는 것을 알았습니다.
다른 작업에 대해 다른 결과가 나올 수도 있고 더 나은 메시지를 표시할 수도 있지만 이것은 잘 작동하므로 엉망으로 만들지 않습니다.
Google Docs 또는 GitHub 에서 전체 데이터와 순위를 찾아보세요.
내가 이미 의심하기 시작한 것은 프롬프트에서 더 적은 단어로 더 나은 결과를 얻고 있다는 것입니다. Mistral 7b Instruct v0.2 에 대한 최고의 시스템 프롬프트를 찾았으므로 어떤 사용자 프롬프트가 가장 적합한지도 테스트했습니다.
| 즉각적인 | 대 OG | 점수 | 메모 |
---|---|---|---|---|
프롬프트0 | 다음 텍스트를 요약하는 간결하면서도 포괄적인 메모를 작성하세요. 중첩된 글머리 기호 사용: 제목, 용어 및 핵심 개념을 굵게 표시합니다. 외부 정보를 추가하지 않고 이 텍스트의 필수 지식에 집중하세요. | 43% | 11 | |
프롬프트1 | 다음 텍스트를 요약하는 간결하면서도 포괄적인 메모를 작성하세요. 중첩된 글머리 기호 사용: 제목, 용어 및 핵심 개념을 굵게 표시합니다. 외부 정보를 추가하지 않고 이 텍스트의 필수 지식에 집중하세요. | 46% | 11 | 추가 메모 |
프롬프트2 | 다음 텍스트를 요약하는 포괄적인 메모를 작성하세요. 중첩된 글머리 기호 사용: 제목, 용어 및 핵심 개념을 굵게 표시합니다. | 58% | 15 | |
프롬프트3 | 다음 텍스트의 중요한 부분을 요약하는 간결한 글머리 기호 메모를 작성하세요. 가독성을 보장하기 위해 공백을 포함하여 제목 용어와 주요 개념을 굵게 표시한 중첩된 글머리 기호를 사용합니다. 반복을 피하십시오. | 43% | 10 | |
프롬프트4 | 다음 텍스트를 요약하는 간결한 메모를 작성하세요. 중첩된 글머리 기호 사용: 제목, 용어 및 핵심 개념을 굵게 표시합니다. | 41% | 14 | |
프롬프트5 | 다음 텍스트를 요약하는 포괄적이면서도 간결한 메모를 작성하세요. 중첩된 글머리 기호 사용: 제목, 용어 및 핵심 개념을 굵게 표시합니다. | 52% | 14 | 추가 메모 |
Google Docs 또는 GitHub 에서 전체 데이터와 순위를 찾아보세요.
아마도 11b 또는 30b 모델을 지원할 수 있는 더 강력한 하드웨어를 사용하면 더 설명적인 메시지를 통해 더 나은 결과를 얻을 수 있을 것입니다. Mistral 7b Instruct v0.2를 사용해도 여전히 몇 가지 창의적인 지침을 시도해 볼 수 있지만 지금은 기존 프로세스를 개선하는 것이 기쁩니다.
다음 텍스트를 요약하는 포괄적인 메모를 작성하세요. 중첩된 글머리 기호 사용: 제목, 용어 및 핵심 개념을 굵게 표시합니다.
이 경우 포괄적은 "간결함" 또는 "포괄적이지만 간결함"보다 더 나은 성능을 발휘합니다.
그러나 이는 사용 사례에 따라 달라질 수 있다는 점에 주의하세요. 내가 찾고 있는 것은 중요한 지식을 다루는 매우 요약되어 있고 읽기 쉬운 노트입니다.
본질적으로, 원본을 읽지 않았더라도 모든 구체적인 세부 사항은 아니더라도 그것이 전달하는 정보가 무엇인지는 여전히 알아야 합니다. 원본을 읽었더라도 나중에 대부분은 기억나지 않을 것입니다. 이 노트는 주요 주제에 대한 빠른 참조입니다.
이 테스트에서 얻은 지식을 사용하여 나는 첫 번째 완전한 책인 539페이지를 5~6시간 만에 요약했습니다!!! 믿을 수 없는!
요약당 몇 주를 소비하는 대신 단 10일 만에 처음 9권의 책 요약을 완료했습니다.
아래에서 게시된 각 텍스트에 대한 CopyLeaks 의 결과를 여기에서 볼 수 있습니다.
특히나 이는 영리 목적이 아닌 교육 목적이라는 점을 고려하면 이 수치는 받아들일 만하다고 생각합니다.
책 | 모델 | 문자 차이 | 동일한 | 사소한 변화 | 의역 | 총 일치 |
---|---|---|---|---|---|---|
동양의 몸 서양의 마음 | 신시아 7Bv2 | -75% | 3.5% | 1.1% | 0.8% | 5.4% |
치유력 미주 신경 | 미스트랄-7B-Instruct-v0.2; SynthIA-7B-v2.0 | -81% | 1.2% | 0.8% | 2.5% | 4.5% |
아유르베다와 마음 | 미스트랄-7B-Instruct-v0.2; SynthIA-7B-v2.0 | -77% | 0.5% | 0.3% | 1.2% | 2% |
트라우마 생존자의 조각난 자아 치유하기 | 미스트랄-7B-Instruct-v0.2 | -75% | | | | 2% |
안전한 기지 | 미스트랄-7B-Instruct-v0.2 | -84% | 0.3% | 0.1% | 0.3% | 0.7% |
몸이 점수를 유지한다 | 미스트랄-7B-Instruct-v0.2 | -74% | 0.1% | 0.2% | 0.3% | 0.5% |
차크라의 완전한 책 | 미스트랄-7B-Instruct-v0.2 | -70% | 0.3% | 0.3% | 0.4% | 1.1% |
50년의 애착 이론 | 미스트랄-7B-Instruct-v0.2 | -70% | 1.1% | 0.4% | 2.1% | 3.7% |
성인의 애착 장애 | 미스트랄-7B-Instruct-v0.2 | -62% | 1.1% | 1.2% | 0.7% | 3.1% |
심리학 전공의 동반자 | 미스트랄-7B-Instruct-v0.2 | -62% | 1.3% | 1.2% | 0.4% | 2.9% |
당신의 삶의 심리학 | 미스트랄-7B-Instruct-v0.2 | -74% | 0.6% | 0.4% | 0.5% | 1.6% |
요약당 몇 주를 소비하는 대신 단 10일 만에 처음 9권의 책 요약을 완료했습니다. 괄호 안은 원본의 페이지 수입니다.
내 단계를 더 자세히 따르고 싶다면 스크립트와 예제가 포함된 GitHub의 연습을 확인하세요.
이제 프로세스가 개선되었고 프롬프트 형식으로 작업하는 데 자신감이 생겼으므로 추가 테스트를 수행하겠습니다. 사실 저는 이미 추가 테스트와 순위를 실시했지만(다음에 게시할 예정입니다), 물론 더 많은 테스트를 다시 수행하고 계속해서 학습할 것입니다!
나는 AI를 사용하여 수행하는 모든 작업에 대해 최상의 결과를 얻으려면 직접 실험을 실행하고 무엇이 가장 효과적인지 확인해야 한다고 믿습니다. 인기 모델 순위에만 의존하지 말고 이를 활용하여 자신의 연구를 안내하세요.
여기에도 나타납니다.