Education*
Devops
Architecture
F/B End
B.Chain
Basic
Others
CLOSE
Search For:
Search
BY TAGS
linux
HTTP
golang
flutter
java
fintech
개발환경
kubernetes
network
Docker
devops
database
tutorial
cli
분산시스템
www
블록체인
AWS
system admin
bigdata
보안
금융
msa
mysql
redis
Linux command
dns
javascript
CICD
VPC
FILESYSTEM
S3
NGINX
TCP/IP
ZOOKEEPER
NOSQL
IAC
CLOUD
TERRAFORM
logging
IT용어
Kafka
docker-compose
Dart
Llama3.1 설치 및 프롬프트 테스트
Recommanded
Free
YOUTUBE Lecture:
<% selectedImage[1] %>
yundream
2024-08-03
2024-08-03
633
![LLM](https://docs.google.com/drawings/d/e/2PACX-1vTvlPhixBPecSOXhmNpz32Lb7TJ0zc4Xh81dtS1Z89riFt0Mec5LtrWlXnKB7Esc14oiF9whzk-jCJq/pub?w=1093&h=493) ### Llama3.1 2024년 7월 23일 메타(Meta)는 오픈 LLM인 Llama3.1을 공개했다. 이 모델은 컨텍스트의 길이를 128K로 확장하고 8개의 언어에 대한 지원을 추가했다. 지원하는 언어는 영어, 독일어, 프랑스어, 이탈리아어, 포르투갈어, 힌디어, 스페인어, 태국어로 안타깝게도 **한국어**는 들어가 있지 않다. 파라메터의 크기 역시 Llama3에서 제공했던 8B, 70B 외에 프론티어 모델인 405B까지를 포함하고 있다. | 모델 | 특징 | | ------------- | ---------------------------------------------------------------------------------------------------- | | Llama3.1 405B | 세계 최대의 대규모 언어 모델이다. 엔터프라이즈급 애플리케이션 및 연구 개발에 적합하며 **모델 증류**를 통하여 합성 데이터 생성과 같은 태스크에 이상적이다. | | Llama3.1 70B | 콘텐츠 제작, 대화형 AI, 언어 이해, R&D, 등에 적합하다. 텍스트 요약, 분류, 감정 분석, 뉘앙스 추론, 언어 모델링, 대화 시스템, 코드 생성등에 뛰어난 성능을 보인다. | | Llama3.1 8B | 제한된 컴퓨팅 파워 및 리소스에 적합하다. 텍스트 요약, 분류, 감정분석 등에 적당한 크기의 모델이다. | 여기에서는 프롬프트를 입력하면서 Llama3.1 8B의 모델 성능을 검토할 생각이다. 그렇다고 통제된 환경에서 엄격하게 수행하지는 않을테고, 몇 가지 예시를 기준으로 정성적으로 진행하려 한다. ## Llama3.1 성능 비교표 ![성능비교표](https://ollama.com/assets/mchiang0610/mikey3.1/73b11a5e-84e9-4397-9d47-f0299a6294b3) ![성능 비교표](https://ollama.com/assets/mchiang0610/mikey3.1/ad042a1c-bbc7-47de-bbbf-78a3cfc13485) 개인적으로 많은 관심을 가지고 있는 벤치마크 자료다. 70B 이상은 다루기가 쉽지 않고 sLLM 쪽에 관심을 가지고 있기 때문이다. 4월달에 발표한 Llama3.0의 경우 GPT3.5 Turbo에 근접하기는 하지만 밀리는 느낌이었는데, 지금은 확실히 앞서는 모습을 보여주고 있다. ![성능 비교포](https://d2908q01vomqb2.cloudfront.net/da4b9237bacccdf19c0760cab7aec4a8359010b0/2024/07/23/2024-llama3.1-in-bedrock-benchmark.png) ## 테스트 환경 및 설치 테스트 환경은 다음과 같다. * CPU: AMD Ryzen 5 5600X * Memory: 32G * GPU: NVIDIA GeForce RTX 4060 Ti, 16G VRAM * Driver Version: 550.100 * CUDA Version: 12.04 * 운영체제: Ubuntu Linux 24.04 * Docker: LLM을 테스트하기 위한 모든 애플리케이션은 Docker 기반으로 설치했다. Ollama를 이용해서 Llama3.1 모델을 실행했다. **ollama 설치** ```bash docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama ``` **Llama3.1 모델 설치** ``` docker exec ollama ollama run llama3.1:8b ``` **Open-WebUI 설치** ``` docker run -d --network=host -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main ``` ![](https://docs.google.com/drawings/d/e/2PACX-1vSqqINng-4H9omJStcGevUYiUoIifuyQ5EeWAQ5nY4K2fJb_Cuxry_Z7Pb0pcAQj-HjPj6k6gLFi-wY/pub?w=931&h=490) # Zero-Shot 프롬프팅 **Zero-shto 프롬프팅**이란 어떤 문제에 대해서 명시적인 "예시"가 없이 간단한 프롬프트만으로 답변을 생성하거나 작업을 수행하는 방식이다. 간단하고 빠른 방법이지만 LLM이 충분히 강력해야지(사전 학습된 지식이 충분해야지) 원하는 답을 얻을 수 있으며, 그 품질이 들쭉날쭉하다는 문제가 있다. 3.1 모델은 한글을 대상으로 하지 않기 때문에, 이를 감안해서 결과를 검토해야 한다. 한글 능력이 떨어지기 때문에 복잡한 문장으은 영어로 번역해서 테스트 했다. ##### 문장의 감정 분석 *Prompt* ``` 다음 문장의 감정을 분석해 주세요: "오늘 정말 기분이 좋아요!" ``` *OutPut* ``` 기쁨입니다. ``` *Prompt* ``` 이 노트북은 구입한 지 한 달도 안 되어 화면에 문제가 생겼어요. 매우 실망스럽습니다. 이 문장의 감성은 무엇인가요? 1에서 5점까지 점수로 알려주세요. ``` *Output* ``` 간단하게 표현하면, 다음과 같습니다. - 감성 : 부정적이며 실망적입니다. - 점수 : 1점 (가장 부정적인 점수) 이 문장에서 화면에 문제가 생겨서 매우 실망스럽다는 것이 강조되어 있고, 이는 1점을 가지는 것으로 여겨집니다. ``` ##### 정보 추출 *Prompt* ``` 엘론 머스크는 스페이스X와 테슬라의 CEO입니다. 이 문장에서 사람과 그의 직업을 추출해 주세요. ``` *Output* ``` - "엘론 머스크" : 이름 - "은" : 연결어 - 스페이스X : 회사명 - 와 : 관계어 - 테슬라 : 회사명 - 의 : 소유권 - CEO : 직업 이 문장에서 사람과 그의 직업을 추출하면 아래와 같습니다. - 사람 : 엘론 머스크 - 직업 : CEO (테슬라, 스페이스X의) ``` 📌 직업만 추출하려고 했는데, 문장 분석 과정까지 함께 출력하고 있다. 다시 프롬프트를 작성했다. *Prompt* ``` 복잡한 과정은 생략하고 결과만 알려주세요. ``` *Output* ``` - 사람 : 엘론 머스크 - 직업 : CEO (테슬라, 스페이스X의) ``` *Prompt* ``` "파리 협정은 2015년 12월 12일에 채택되었습니다." 이 문장에서 중요한 날짜와 그 날짜와 관련된 사건만을 추출해 주세요. ``` 자꾸 문장을 분석을 하려고 해서 "그 날짜와 관련된 사건**만**을"이라고 조건을 붙였다. *Output* ``` - 날짜 : 2015년 12월 12일 - 사건 : 파리 협정의 채택 ``` *Prompt* ``` 스티브 잡스는 애플의 공동 창립자로, 최초의 아이폰을 출시했습니다. 이 문장에서 인물과 그의 역할을 추출해 주세요. ``` *Output* ``` - 인물 : 스티브 잡스 - 역할 : 애플의 공동 창립자 및 최초의 아이폰 개발者 ``` --- *Prompt* ``` "2024년 5월 10일, 국제 연합(UN)은 기후 변화 대응을 위한 새로운 정책을 발표했습니다. 이 정책은 2030년까지 온실가스 배출을 50% 줄이는 목표를 포함하고 있습니다." 위 문장에서 날짜, 조직, 정책의 목표를 추출해 주세요. ``` *Output* ``` - 날짜 : 2024년 5월 10일 - 조직 : 국제 연합(UN) - 정책의 목표 : 기후 변화 대응, 온실가스 배출 50% 감축 (2030년까지) ``` *Prompt* ``` JSON 형태로 알려주세요. ``` *Output* ``` - 날짜 : "2024-05-10" - 조직 : "국제 연합(UN)" - 정책의 목표 : {"온실가스": "50% 감축", "기간": "2030년"} ``` *Prompt* ``` 날짜, 조직, 정책 목표 등 모든 정보를 하나의 JSON 형식으로 알려주세요. ``` *Output* ``` { "날짜": "2024-05-10", "조직": "국제 연합(UN)", "정책 목표": { "온실가스": "50% 감축", "기간": "2030년" } } ``` *Prompt* ``` JSON의 KEY는 한글을 사용 할 수 없습니다. 영어로 만들어주세요. ``` *Output* ``` { "date": "2024-05-10", "organization": "United Nations", "policyGoal": { "greenhouseGas": "50% reduction", "period": "2030" } } ``` 📌 JSON으로 출력하기 위해서 몇 번의 대화를 거쳐야 했다. ##### 문장 요약 *Prompt* ``` 다음 텍스트를 요약해 주세요: '오늘은 날씨가 맑고 따뜻했으며, 많은 사람들이 공원에 나와서 산책을 즐겼습니다. 공원에는 꽃이 활짝 피어 있었고, 아이들은 놀이터에서 놀고 있었습니다.' ``` *OutPut* ``` 공원에서 사람들이 산책하며 즐거운 시간을 보냈다. ``` --- *Prompt* ``` 아래 문장을 요약해 주세요. ### 문장 ### 오늘날의 디지털 기술은 우리의 생활 방식에 큰 변화를 가져왔습니다. 스마트폰과 인터넷은 정보 접근 방식을 혁신적으로 변화시켰으며, 사회적 상호작용과 업무 방식도 크게 변화시켰습니다. 이러한 기술의 발전은 교육, 비즈니스, 그리고 개인 생활에까지 영향을 미치고 있습니다. 하지만 이러한 변화는 새로운 도전 과제를 동반하며, 개인정보 보호와 사이버 보안 문제와 같은 새로운 문제를 일으키고 있습니다. ``` *Output* ``` 디지털 기술은 우리의 생활 방식과 사회, 교육, 비즈니스에 큰 영향을 미쳤지만, 새로 발생한 문제들도 같이 왔습니다. ``` *Prompt* ``` 어떤 문제가 발생했나요 ? ``` *Output* ``` 개인정보 보호와 사이버 보안 문제가 발생했습니다. ``` --- ##### 문장완성 *Prompt* ``` 오늘 날씨가 좋다. 내일은... ``` *Output* ``` 내일은 또 어떤 날씨일지 모르겠습니다. ``` ##### 추론 *Prompt* ``` 만약 모든 포유류는 온혈 동물이고, 고래는 포유류라면, 고래는 어떤 동물인가요? ``` *Output* ``` 고래는 포유류이고, 포유류는 온혈 동물이므로, 고래도 온혈 동물입니다. ``` --- *Prompt* ``` 비가 오면 도로가 젖습니다. 지금 도로가 젖어 있다면, 비가 왔을 가능성이 있나요? ``` *Output* ``` 네, 도로가 젖었을 때 비가 왔을 가능성이 있습니다. 하지만, "비가 왔"이라는 의미는 현재에 한정된 시간적 개념입니다. 따라서, 현재 도로가 젖은 상태를 지닌다는 것만 알고는 있지만, 그 상태가 과거의 비에 의해 발생했는지 아니면 다른 이유로 인해 발생했는지 알 수 없습니다. 즉, 도로가 젖었다는 정보만 가지고 있기 때문에, "비가 왔"이라는 특정한 시점을 특정지울 수 없게 됩니다. ``` 쓸데없이 장황하게 의견을 늘어놓고 있다. "간단하게 알려줘"와 같이 추가적인 정보를 프롬프트로 제공해야 한다. --- *Prompt* ``` 다음 문제를 해결하고 설명해 주세요: '철수는 하루에 사과를 두 개씩 먹습니다. 사과 한 상자에는 12개의 사과가 들어있습니다. 철수가 사과 한 상자를 다 먹으려면 며칠이 걸리나요?' ``` *Output* ``` 사과 한 상자의 사과 수는 12개이고, 철수는 하루에 두 개의 사과를 먹습니다. 철수가 사과 한 상자를 다 먹기 위해서는, 사과 한 상자를 완전히 소진하기까지 걸리는 날수를 구하겠습니다. 일주간을 세어보자면: 일주 = 7일 사과 한상자의 사과 수 : 12개 철수는 하루에 2개의 사과를 먹습니다. 따라서, 사과 한 상자를 다 먹기 위해서는, 다음 계산을 합니다: 사과 한상자 총 수 : 12 개 사과 한상자를 다 먹기 위해 걸리는 날 수: 총 사과 개수 / 철수가 하루에 먹는 사과 개수 12 / 2 = 6 일 철수는 사과 한 상자를 다 먹기 위해서 6일이 걸립니다. ``` ##### 문학적 문체 생성 *Prompt* ``` 사랑에 관한 짧은 시를 지어주세요. ``` *Output* ``` 한 여울의 빛이여, 나의 마음을 비추니 하늘과 바다가 하나로 흐르듯이, 마음속 깊숙이 내 곁에 서서, 빛과 그림자를 함께 내리는 너, 내 사랑하는 사람아, 너를 찾는 내 마음은, 언제나 빛과 그림자 함께 있음을. ``` ##### 복잡한 정보 요약 *Prompt* ``` 세계에서 가장 높은 산에 대해 알려주고, 그 산을 등반하는 데 필요한 준비물에 대해 요약해 주세요. ``` *Output* ``` 세상에서 가장 높은 산은 에베레스트산(자바라 산)입니다. 에베레스트산은 네팔과 티베트의 국경에 위치한 고대네파 주에 있는 산으로, 높이는 8848m입니다. 그렇다면 등반하는 데 필요한 준비물은 무엇일까요? 1. **체력**: 에베레스트산을 등반하기 위해서는, 일반적인 산 등반보다 훨씬 더 강한 체력을 필요로 합니다. 2. **등반 경험이 있는 지구력**: 에베레스트산 등반에 앞서, 다른 큰 산의 등반 경험이 있거나, 높은 자리에서 등반해 본 경험이 있어야 합니다. 3. **적절한 장비**: 다음과 같은 장비가 필요합니다. - 등반용 양말 - 등반용 부츠 - 등반용 구두 - 등반용 의류 - 등반 용구 (등반용 지프, 고정용줄) - 개인 생존장비 (진공보호기, 심부름용품) - 등반용 휴대식 식량 **주의**: 에베레스트산 등반은 매우 어렵고 위험한 활동입니다. 등반 전에 적절한 훈련과 준비가 필요하고, 전문 등반 팀을 찾아 등반하는 것을 권장합니다. ``` ##### 시나리오 기반 문제 해결 *Prompt* ``` You have 3 water bottles. And their capacity is 5 liters, 3 liters, and 2 liters respectively. Please explain how to measure 4 liters of water using 3 water bottles. ``` *Output* ``` Here's the solution: 1. Fill the 3-liter bottle completely with water. 2. Empty the 2-liter bottle and pour the contents from the 3-liter bottle into the 2-liter bottle until it's full (2 liters). 3. Now, there are 1 liter of water left in the 3-liter bottle. Pour this remaining water into the empty 5-liter bottle to fill a total of 4 liters in the 5-liter bottle. This is because: - The 5-liter bottle contains only 1 liter of water initially. - You add another 3 liters from the 2-liter bottle, but you already had 2 liters filled up in that bottle, so you take out those 2 and put them aside. Now, there's 1 liter left in the 3-liter bottle which is poured into the empty 5-liter bottle to fill a total of 4 liters. This way, you have measured exactly 4 liters of water using all three bottles. ``` 3리터 병을 가득 채운 다음, 2리터 병에 부으면 3리터 병에는 1리터만 남는다. 이것을 5리터 병에 넣는다. 이 과정을 4번 반복하면 4리터를 채울 수 있게 된다. *Prompt* ``` 지금 방 안에 불이 꺼져 있고, 창문이 열려 있으며, 시원한 바람이 들어오고 있다면, 방 안의 온도는 어떻게 될 가능성이 있나요? ``` *Output* ``` 방 안의 온도는 낮아질 가능성이 있습니다. ``` *Prompt* ``` A: 오늘 저녁에 축구 보러 갈래? B: 미안, 오늘은 바빠서 안 돼. B는 왜 축구 보러 갈 수 없나요? ``` *Output* ``` B는 이유를 직접 말하지 않았지만, 대신 "오늘은 바빠서"라고 말한 것을 보아, 오늘 다른 일정이나 업무가 있다고 추론할 수 있습니다. ``` ##### 창의적 이야기 생성 *Prompt* ``` 다음 문장의 의미를 설명해 주세요: '인생은 여행과 같다.' ``` *Output* ``` "인생은 여행과 같다."는 문장은 인생을 여행의比喩로 표현한 것입니다. 이 문장은 인생의 다양한 경험이 travel(여행)와 비슷하다는 의미를 전달합니다. 즉, 인생을 경험하고 배우는 것이 여행과 유사하다는 말입니다. - 여행은 새로운 장소에 갈 때, 경험을 하며, 새로움을 체험할 수 있습니다. - 인생도 마찬가지로, 다양한 경험이 있고, 새로움을 경험하며, 성장하는 것입니다. 이 문장은 인생의 의미를 강조하고, 사람에게 새로운 경륜과 이성으로 살아가자는 메시지를 전달합니다. ``` ##### 수학 능력 *Prompt* ``` 반지름이 7cm인 원의 둘레를 계산하세요. ``` *Output* ``` 원둘레 공식은 2πr입니다. - 반지름(r) : 7cm - π(approximate value) : 3.14 - 원둘레 : 2 × 3.14 × 7 cm = 43.96 cm (또는 약 44cm) ``` *Prompt* ``` 반지름이 7cm인 원의 둘레를 계산하세요. (π는 3.1415로 간주하세요.) ``` *Output* ``` 원둘레 공식은 2πr입니다. - 반지름(r) : 7cm - π(approximate value) : 3.1415 - 원둘레 : 2 × 3.1415 × 7 cm = 44.0121 cm (또는 약 44cm) ``` 📌 잘못된 답이 나왔다. 정답은 43.9810 이다. *Prompt* ``` x^2 - 5x + 6 = 0의 해를 구하세요. ``` *Output* ``` 이 방정식은 2차방정식입니다. - x^2 - 5x + 6 = 0 - x^2 - 3x - 2x + 6 = 0 (연분) - x(x - 3) - 2(x - 3) = 0 - (x - 3)(x - 2) = 0 이제, 두 가지 경우가 있습니다. 1. x - 3 = 0 => x = 3 2. x - 2 = 0 => x = 2 따라서, 이 방정식의 해는 x = 3 또는 x = 2입니다. ``` *Prompt* ``` 밑변이 10cm이고 높이가 5cm인 삼각형의 면적은 얼마인가요? ``` *Output* ``` 삼각형의 넓이는 밑변과 높이의 곱으로 계산됩니다. - 밑변 : 10cm - 높이 : 5cm - 넓이 : 10cm × 5cm = 50cm² ``` 📌 잘못된 답이 나왔다. 삼각형의 공식을 알려주도록 프롬프트를 수정했다. *Prompt* ``` 삼각형 넓이 구하는 공식은 밑변의 길이와 높이의 곱을 2로 나눈 것과 같습니다. 밑변이 100cm 이고 높이가 50cm 인 삼각형의 면적은 얼마인가요 ? ``` *Output* ``` 삼각형의 넓이는 밑변과 높이의 곱을 2로 나누는 공식입니다. - 밑변 : 100 cm - 높이 : 50 cm - 넓이 : (100 cm × 50 cm) / 2 = 5000 cm² / 2 = 2500 cm² ``` 📌 정보를 제공하자 제대로된 계산 결과를 출력했다. 프롬프팅이 중요한 이유를 알 수 있다. ### 평가 최근의 LLM들은 대량의 데이터를 학습하고 지침을 따르도록 튜닝이 되어 있다. 그 능력도 나날이 좋아지고 있어서 제로샷(Zero-shot)만으로도 많은 작업들을 수행 할 수 있다. 하지만 일반적인 방식으로 추론하고 응답을 만들어 내기 때문에 장황하게 설명하거나 형식에 맞지 않거나 (틀린 답은 아닌데)미묘하게 다르게 응답하는 등의 문제가 있다. 이 경우 "간단하게", "~만"등 마치 인간과 대화하듯이 정정을 요청 해서 대화를 종료 할 수 있다. 일반적인 대화에서는 상관 없을 수 있지만, 전문지식이 필요한 상황에서는 문제가 될 수 있다. * Llama3.1의 전반적인 성능: 훌륭하다. * 한글성능: 복잡한 문장에 대해서는 능력이 떨어진다. 이건 어쩔 수 없다. 한글 프리-트레이닝된 모델을 기다려야 할 것 같다.
Recent Posts
SLA 다운타임 계산기
Docker로 GitLab 설치하기
Ubuntu Linux에 NVIDIA 드라이버 설치
Gemini를 이용한 E-commerce 제품 설명서 생성
프롬프트 엔지니어링 101
Llama3와 MySQL을 이용한 Text2SQL
Llama3.1 설치한 김에 Few-Shot 프롬프팅
Llama3.1 설치 및 프롬프트 테스트
신뢰할 수 있는 AI 앱을 설계하기 위한 LLM 개발원칙
LiteLLM을 이용하여 OpenAI API로 멀티 LLM 통합
Archive Posts
Tags
AI
LLM
Copyrights © -
Joinc
, All Rights Reserved.
Inherited From -
Yundream
Rebranded By -
Joonphil
Recent Posts
Archive Posts
Tags