본문 바로가기

공부방/Upstage AI Lab 4기

패스트캠퍼스 Upstage AI Lab 부트캠프 4기, 과정 중간 회고 2024년 7월 16일, 부트캠프가 시작된 이후로 절반 좀 넘게 지난 것 같다. 패스트캠퍼스 업스테이지 AI Lab 부트캠프를 선택했던 가장 큰 이유였던 '프로젝트'를 정신없이 하다보니, (그리고 지금도 하고 있고..) 각잡고 회고할 기회가 많지 않았던 것 같다. 이번 기회에 과정 중간 회고를 딥하게 해보았다. 1. 프로젝트에 관하여7월부터 11월 말을 향하고 있는 지금까지 프로젝트를 벌써 5개(!)를 했다. 랭체인 프로젝트: 올림픽 경기 규칙 RAG머신러닝 경진대회: 아파트 실거래가 예측MLOps 프로젝트: 사용자가 디스플레이에 숫자를 그리면, 숫자를 인식해서 출력하고, 데이터베이스로 관리되면서 모델이 계속해서 업데이트되도록 하는 파이프라인 구성CV 경진대회: 17가지 문서 또는 차량 관련 이미지를 주.. 더보기
[NLP] 경진대회 발표 및 정리 우리 팀이 1등!!! 하핫다른 팀들이 한 삽질 및 인사이트들 공유한 부분을 정리했다. 모델 레이어 프리징T5 모델, 한국전자기술연구원에서 한국어 데이터셋 사전학습된거 - 메모리 누수 - Qlora를 써도 해결이 안됐음젬마 모델 - 구글 베이스의 ko-gemma 2-9b it 이것도 메모리 누수. LoRa 사용하려고 했는데, 안됐음.. 앙상블 적용하셨다는데, 모델 레이어 프리징. 소프트 보팅 방식 사용. 멘토님 의견 -> 데이터 증강할때 LLM한테 퓨샷 샘플을 더 넣어줘서 전이학습을 시켜줬으면 좋았을 것 (데이터셋이 번역한거라서 LLM이 쌩으로 만드는 거랑은 많이 디스트리뷰션이 다름)데이터 오류 발견! 데이터가 노이지한 데이터임.. (요약문에 대화문이 들어가 있는다던가..) 같은 내용의 대화문인데 형식만 .. 더보기
[NLP] VRAM이 딸려서 모델이 안돌아갈때 할 수 있는 방법들 VRAM(Video RAM) = 그래픽 처리 장치(GPU)에 내장된 고속 메모리. GPU와 실시간으로(아주아주 빠르게) 데이터를 주고받을 수 있다. 모델의 파라미터, 배치, 연산의 중간 결과 등을 저장하는 역할을 함.딥러닝 모델을 학습시키거나 파인튜닝할 때, 큰 모델, 대용량 데이터를 넣으려면 VRAM이 많이 필요. (VRAM 용량이 부족하면 데이터, 모델을 못넣음)  VRAM이 부족한데 모델은 꼭 돌려보고 싶다면?1) 배치를 줄이거나, 작은 모델을 쓴다. 대신 작업 속도가 느려지고, 품질이 낮아짐.- 배치를 줄이고, 작은 배치를 여러 번 처리한 후 가중치를 업데이트(Gradient Accumulation) -> 이번 대회에서 가장 많이 쓰고 있는 방법! 일반적인 학습: 배치마다 손실함수의 그래디언트를 .. 더보기
[NLP] EXAONE 모델 가져다가 추론만 시키기 멘토링때 멘토님이 EXAONE 모델도 추천을 해주셔서 대회 하루 남겨놓고 급하게 추론만이라도 돌려본다. 30분이 지났는데도 아직도 요약문 만드는 중.. 생각보다 오래걸린다. 현재 사용하고 있는 모델: BM-K/EXAONE-3.0-7.8B-Daily-Conversation-Summary링크에 가면 Quick Start라고 어떻게 쓰면 되는지 나와있는데, 이 방법대로 따라갔다.먼저 모델을 불러와준다. (트랜스포머 버전 안맞으면 로드가 안됨.. 관련글)import torchfrom transformers import AutoTokenizer, AutoModelForCausalLMdevice = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')mo.. 더보기
[NLP] 모델 한번 바꿀 때마다 난관... 우리 팀의 능력자(!) 분께서 또 찾아주신 모델!! EXAONE 모델을 대화문 요약으로 파인튜닝한 모델이 있어서, 이 모델로 인퍼런스 해볼라고 모델 로드하는데 자꾸 막혀서 계속 헤매다가...아 이거 어찌나 짜증나던지.. 클로드한테 물어봐도 자꾸 똑같은 말만 반복하고 access token 을 설정하라는둥, 모델 프라이빗에 있는거 아니냐는둥.. 도돌이표같은 얘기만 계속 하면서 시간을 버림ㅠ 그러다가 원래 모델인 EXAONE-3.0-7.8B-Instruct 페이지를 보다가 뒤늦게 발견했다. "We recommend to use transformers v4.41 or later."트랜스포버 버전을 최신 버전으로 업그레이드하고 액셀러레이터인가? 그거 업데이트하니까 된다..!!!하하하하 ㅠㅠㅠ이 창에서 얼마나 헤.. 더보기
GPU 상세 스펙 알아두고, 메모리 램 관리하기 apt install inxi 설치 후 inxi - F 명령어를 통해 CPU/GPU, RAM, 저장공간 등을 확인할 수 있습니다. GPU 관련된 상세 정보는 nvidia-smi 명령어를 통해 확인 가능 현재 쓰고 있는 서버에서의 gpu: NVIDIA GeForce RTX 3090메모리: 24GB GDDR6X 과도한 메모리를 사용하면 서버 폭파될 수 있음 더보기
[NLP] 화자가 몇 명인지 정보를 주면 좋을까? 데이터 전처리를 하기 위해 EDA를 계속 하던 중...데이터 클리닝이 필요할까 싶어서 이상치들을 찾으려고 노력했는데, 딱히 특수문자나 약어가 들어간 것도 별로 없었다. 데이터 클리닝을 할 필요가 없는 것 같다. 대신 보다 보니, 화자가 최대 몇 명일까가 궁금했다.def analyze_speakers(dialogues): # 화자 패턴을 찾는 정규표현식 speaker_pattern = re.compile(r'#Person\d+#') # 각 대화별 화자 수를 저장 dialogue_speakers = [] # 전체 데이터셋에서 발견된 모든 화자 all_speakers = set() for dialogue in dialogues: # 현재 대화에서.. 더보기
[NLP] 대화의 턴수와 주요 발화자를 토큰으로 추가해보자 가설 1) 대화의 턴수 정보와 발화자의 빈도를 세어서 턴에서 차지하는 비율을 토큰 정보로 주면 성능이 개선되지 않을까?--> 결과적으로 아니였던 걸로.. 대화 턴수 토큰의 효과:요약문의 길이와 상관관계가 있을 수 있음 (긴 대화는 더 긴 요약이 필요할 수 있음)모델이 대화의 전체 구조를 파악하는데 도움특히 encoder_max_len으로 잘린 대화의 경우, 원래 대화가 얼마나 길었는지 인식 가능 발화자 빈도 토큰의 효과:주요 화자 식별을 통해 중요한 정보의 우선순위 결정 가능대화의 주도자가 누구인지 파악하여 요약의 관점 설정에 도움특히 한국어 대화는 주어 생략이 많은데, 주요 화자 정보가 이를 보완할 수 있음import pandas as pdimport redef get_turns_token(turn_c.. 더보기