NCUC 판교 소모임 참여 후기
네이버클라우드 사용자 모임에 참여했습니다.
발표 세션과 네트워킹 세션으로 나누어 진행했고, 특별히 이번에는 대학생 분들의 발표로 시작했습니다. 앞으로 멋진 클라우드 사용자로 활약하실 꿈나무의 이야기가 궁금했네요.
판교 소모임 소개
네이버클라우드 마스터 이수진, 윤서율님의 소개로 시작했습니다. 메인 진행자는 이수진 마스터님입니다. 중요한 점은 이 모임은 User의 행사이며 해당 클라우드 사에서 주관하지 않는다는 것입니다. 장소나 간식, 선물을 지원받을 수 있지만, 본질적으로 사용자가 만들어나가는 행사라는 점을 강조해주셨습니다. 사용자들이 만드는 행사이므로, 네이버클라우드의 입장을 대변하지 않으며, 좀 더 자유롭게 논의할 수 있는 자리라는 점이 좋다고 생각합니다.
지난 피드백 중에서, 어려운 기술을 설명하면 좋겠고, 세션의 종류도 다양해지길 원한다는 결과가 있었네요. 앞으로 더 확장해나갈 네이버클라우드 소모임을 응원해봅니다.
운영진 소개
콘텐츠 마스터 이수진님과 밋업 마스터 윤서율님이 운영진으로 활동하고, 그 외에도 네이버클라우드 MASTER 분들이 함께 도와주고 계십니다. 덕분에 좋은 행사가 이루어질 수 있어 감사하네요.
진행 순서는 다음과 같습니다.
1부에서는 NCUC 소모임 소개를 하고, 이어서 돌아가며 간단히 자기 소개를 했습니다. 서로를 알아가는 짧지만 중요한 시간입니다. 이어서 대학생 사용자분들의 발표와 퀴즈가 있었습니다. 짧고 굵은 구성이 마음에 드네요.
참여한 분들의 자기 소개를 들어보니, 기존 멤버분들도 있지만 판교 소모임이 '역삼'에서 열리면서 새로운 분들도 많이 볼 수 있었습니다. 신입 클라우드 엔지니어, 시니어 엔지니어, 개발자, AI 연구원, 이직 준비생, 취업 준비생/대학생 등 다양한 분들이 와주셨습니다. 좀 더 네트워킹할 때 다양한 이야기를 나눌 수 있었던 이유죠!
발표1. 콘솔과 테라폼으로 만드는 쿠버네티스
강형근 님의 발표로 시작했습니다. 이 쿠버네티스는 네이버클라우드에서 제공하는 관리형 쿠버네티스 서비스인 NKS(Ncloud Kubernetes Service)를 의미합니다. 네이버클라우드 콘솔과 테라폼으로 각각 구현하는 방법을 소개해주셨습니다. 현제 네트워크 마스터로 활동 중인 서태호님의 강의를 듣고 준비해주셨습니다.
강형근님은 초심자의 마음으로 학습한 내용을 정리해주셨습니다. 비공식 표준 아키텍처, 콘솔로 만드는 쿠버네티스, 쿠버네티스 with Terraform 순서로 진행됐습니다.
비공식 표준 아키텍처는 서태호님이 만든 아키텍처를 참고해서 subnet 대역과 용도를 정리해둔 것입니다. 이걸보고 콘솔에서 따라서 만들면 보다 쉽게 만들 수 있겠네요. 또한, 콘솔에서 쿠버네티스를 생성할 때 주의할 사항들을 잘 짚어주셨습니다. 기본적으로 많은 서브넷(private, public, LB, NAT GW)를 미리 준비해두어야 합니다. 이런 경우, 다양한 서브넷을 생성하기 위해서는 충분히 크게 IP CIDR를 설정해주어야 합니다.
간단히 정리해보면 다음과 같습니다. vpc는 10, 172, 192번대 대역 중 어느 것을 해도 됩니다. subnet은 7번만 예비로 하고 나머지는 비공식 표준 아키텍처를 참고하여 만듭니다. 이 때, 네이버클라우드는 subnet을 private, public으로 설정할 수 있고, 추가로 일반, LoadBalancer, NAT GW로 용도를 선택해서 만들어야 합니다.
이 상태에서 NKS를 생성하고 클러스터는 최신 버전, subnet은 각 항목마다 지정합니다. 노드풀은 기본값이 1인데 2개로 설정하고 외부 통신을 위해 NAT GW를 만들어서 연결해줍니다.
마지막으로 NKS의 uuid를 확인하고, NCP-CLI를 통해 콘솔 계정을 연동합니다. 쿠버네티스 노드에 2048 게임을 올리고, 로드밸런서 타입으로 80포트 접속을 허용해주고, 다음 명령어로 외부 IP를 확인해줍니다. 해당 IP를 웹 주소창에 입력하면 쿠버네티스에 배포된 게임이 나타납니다.
# NKS 연결된 노드 확인
kubectl get nodes
# 외부 IP 확인
kubectl get svc
Terraform으로도 알려주셨습니다. 핵심인 main.tf, variable.tf, versions.tf, nat.tf, nks.tf를 각각 생성하고 아래 명령어를 입력합니다.
terraform init
terraform plan
terraform apply --auto-approve
이때, 완전히 리소스가 생성될 때까지 15분에서 최대 1시간이 소요됩니다. 콘솔에서 NKS 클러스터와 노드 생성된 것을 확인할 수 있습니다. 이 다음 작업은 위와 동일하게, kubeconfig 파일을 생성하고, NCP-CLI 환경 변수를 설정한 후에 cat 명령어로 코드로 2048 게임을 설정합니다. 이 후 로드밸런서로 외부 접속 설정을 해주면, 위에서 본 것처럼 외부 IP 주소를 통해 게임을 진행하면 됩니다.
발표2. Ncloud 가상 표준 아키텍처 구성
권순찬님도 서태호 마스터님의 강의를 듣고 정리해주신 내용인데, 아키텍처에 좀 더 집중을 해주셨습니다. 같은 교육 내용을 다른 관점에서 자세히 다루어주셨습니다.
3 Tier, 콘솔 다뤄보기, 리소스 정리하기 순으로 진행해주셨습니다. 먼저 3Tier(web, was, db)를 소개해주셨고, 기존에 AWS로 구성했던 아키텍처를 이제 네이버클라우드로도 정리를 해서 보여주셨습니다. 각 서비스를 대응해서 하나씩 채워가며 보여주니 이해가 훨씬 잘 되었던 기억이 나네요.
아키텍처를 중점으로 하나씩 살펴보았습니다. 콘솔에서 네트워크 VPC, Subnet을 설정했고, blue-green 배포를 위해 500개 이상의 IP 자원을 할당할 수 있게 구성한다고 합니다. 그 외에도, subnet의 용도에 일반, LB, NAT, Transit 등을 지정할 수 있다고 합니다.
서버부터 생성을 할 수 있는데, 생성시 NIC(네트워크 인터페이스)부터 추가해야 하고, 그 외에 NAT GW를 생성할 때에는 Route Table에도 ANY(0.0.0.0)로 NAT GW를 추가해야 한다는 점 등을 언급해주셨습니다. 이 모든 작업은 NKS를 생성할 때 필요한 서브넷을 만드는 것입니다. DB(Database)는 네이버클라우드의 완전관리형 서비스인 Cloud DB for MySQL을 사용했습니다. 고가용성 지원을 설정해두면 active-standby를 손쉽게 구축할 수 있어 편리하네요.
다른 벤더사와 차이점도 정리해주셨습니다. 서비스 관리시 콘솔에서 직접 서버를 접속할 수 있고, 아이디와 비밀번호를 사용합니다. 다른 벤더사는 key 파일을 추가(ssh -i 키파일)하는 점이 달랐습니다. 특히, 네이버클라우드에서 이 관리자 비밀번호는 키파일을 넣어서 확인할 수 있게 되어있네요.
리소스 정리하는 방법도 알려주셨습니다. 아무 생각없이 지울 수 없고 각각 순서가 있어 복잡합니다. 오류 메시지도 많이 뜨구요. 가령, NAT GW를 없애려면 위에서 추가한 Route Table의 NAT GW를 제거해줘야 하고, LB는 타겟 그룹을 먼저 지워야 합니다. VPC는 서브넷부터 모두 제거한 뒤에 삭제가 가능합니다. 서버도 중지만 하면 안되고 "반납"버튼을 눌러야 완벽히 리소스 반납이 됩니다.
그럼에도 잔여 리소스가 있다면 "회원탈퇴"를 누르면 확인할 수 있다고 합니다.
덕분에 네이버클라우드의 다양한 리소스 생성과 반납에 대해, 3 Tier 아키텍처를 중심으로 알아갈 수 있었습니다.
발표 3. 하이퍼클로바 튜닝을 위한 데이터 증강 방법 ▶ 주니어 개발자의 하이퍼클로바 개발 일지
김재현님의 발표는, 제목을 좀 수정해주셨습니다. 미남홀란드, 김덕배라는 별명을 지닌, AI Service 개발자님의 하이퍼클로바 개발 일지라는 제목으로 멋진 발표를 들었습니다.
파인튜닝 vs RAG, 페르소나 파인튜닝, 서비스 활용 순으로 발표해주셨습니다. 다양한 하이퍼클로바 활용 경험을 갖고 있고, 여러 대회에도 참여하신 바 있는 재현님의 이야기가 기대되네요.
파인튜닝 vs RAG 비교
파인튜닝은 사전 학습 모델에 각 개별 기업 도메인 특화 데이터를 추가로 학습합니다. 맞춤형 모델을 생성할 때 좋지만 학습에 너무 많은 돈이 들어갑니다.
RAG는 검색 증강 생성이란 말로, 최신의 외부 데이터에서 적절한 문서를 검색하고 이를 통해 답변을 생성하고 개선합니다. 일반인에게 쉽게 다가가는 것은 RAG 기법이네요.
페르소나 파인튜닝: 루피가 되어보자!
루피, 슈카, 브레인스토밍 모자를 페르소나(가면)으로 지정해서 말투를 따라하는 봇을 만들었다고 합니다. 그 과정을 살펴보니, 다양한 데이터를 활용했습니다. 그 중 루피에 대한 데이터가 많이 필요한데, 쉽지가 않았습니다. 직접 만드는 것은 너무나 피로합니다. 다른 방법을 생각해보니, 지식 증류(Knowledge Distillation)를 적용해보셨다고 합니다.
먼저 나무위키 명대사를 추가해본다. 이것을 GPT에 넣어 데이터셋을 만들 수 있는가? OpenAI사는 GPT를 활용한 데이터셋으로 상업적으로 학습하지 못하게 합니다. 상업적 이용이 제한되어 있죠. 배포를 못하기 때문에 다른 도구를 살펴보았습니다.
데이터셋 증강 방법으로, GPT를 1차로 사용해보고, HCX(HyperCLOVA X)의 데이터 확장 기능을 사용해보았습니다만, HCX 확장 기능으로는 일반적인 상식 데이터만 나왔다고 합니다. 이 때, 플레이그라운드에서 확장 기능으로 얻은 답변을 루피의 말투(예제)로 바꿔달라며 3단계로 바꾸어 최종 생성된 데이터를 학습했다고 하네요. 무려 800개를 학습해보니 원피스 세계관까지 모두 이해하며 잘 답변했다고 합니다.
그 외에도 멀티턴 방식으로 데이터셋을 증강하는 것을 적용하기도 하고, 일부 환각의 경우 RAG를 통해 해결한 경험을 소개해주셨습니다. 특히, 학습을 위해 도움이 될만한 "한국어" 데이터셋을 추천해주셨습니다. 바로 Hugging Face에서 제공하는 오픈소스 데이터셋을 활용하는 것입니다. 다양한 테스크에 맞는 데이터를 제공해주어 좋습니다.
https://huggingface.co/maywell/Llama-3-Ko-8B-Instruct
maywell, kyujimpy, beomi 등의 유명 계정이 있다고 하니 참고하면 좋겠습니다. 또한, gemini-flash, GPT 4o-mini와 같은 경량화 모델은 기존 최신 모델 대비 20배나 낮은 가격으로, 엑셀에 넣어 자동화하면 데이터셋은 저렴하면서도 충분히 만들어낼 수 있겠습니다. 그 외에도 현석님의 hcx-datasets-auto-generator 코드를 활용해보면 좋겠습니다.
https://github.com/chucoding/hcx-datasets-auto-generator/tree/main
서비스 활용: LLM 챗봇 품질 개선 노하우
1. Loss가 0점대가 아니라면, epoch를 늘리고, 마지막으로 learning rate를 점차 높이는 것입니다.
2. 프로젝트 기능별로 하나의 문제에 집중하도록 쪼개야 합니다. 가령 LangChain 프레임워크를 활용한다면, 각 기능별 에이전트를 구성해서 문제에 집중하도록 만들고 결과를 생성하는 것입니다.
3. 정보를 주입하는 형태의 파인튜닝은 비싸고 오래 걸립니다. 이 때, 페르소나 파인튜닝을 활용하면 2~3 시간이면 충분하고, 추가로 RAG, LongContext와 같은 것이 발전하면서 언어 모델 자체 성능이 좋아졌습니다. 그럼에도 다양한 테스크에 투입하다보면 환각 현상, 답변이 불가능한 경우도 많아지므로, 기능별로 LLM을 구성하면 좋습니다.
4. 8월 27일자로 HCX에도 멀티 모달 서비스가 오픈되었습니다. 눈이 생겼고, 이미지도 하이퍼클로바가 인식하고 이를 바탕으로 답변을 생성할 수 있다고 합니다. 여기에 스킬트레이너를 곁들이면 좀 더 풍부하고 정확한 답변을 해낼 수 있다고 하니 기억해두려고 합니다.
후기: 다음이 기대되는 NCUC 수도권 남부 소모임!
퀴즈도 재미있었고, 대학생 분의 열정과 현직자의 노하우를 함께 즐길 수 있는 시간이었습니다. 그 외에도 아직 HCX에 대해 공부할 게 많이 남아있어 더욱 동기부여를 받은 행사였습니다. 네트워킹 시간에 이 분들의 열정이 느껴졌고, 스터디도 자주 하시는 분들을 보며 한편으로는 반성하기도 했네요. 남은 시간동안 네이버클라우드 공부도 하고 다음 모임에서는 멋지게 발표해서 지식을 나누며 성장하고 싶습니다! 수도권 남부 소모임으로 확장하는 NCUC, 전세계로 성장하길 기대합니다!
'세미나 후기' 카테고리의 다른 글
[AWS] AWS Industry Week 후기 - Healthcare (0) | 2024.11.09 |
---|---|
[Ncloud] GSLB로 DNS 이중화 스터디 후기 (1) | 2024.08.18 |
[가짜연구소] <초조한 전망대> 나만의 AI 뉴스레터 설명해보기 연습 (0) | 2024.07.28 |
[Ncloud] 마스터와 함께하는 네트워크 스터디 후기 (3) | 2024.07.14 |
[가짜연구소] <초조한 전망대> 두번째 후기: 내 AI 유형 탐색하기 (0) | 2024.07.07 |