[Python] 언어모델의 출력을 스트리밍 방식으로 출력하기
·
Python
언어모델을 GPU에 올려 사용할 경우 출력까지 길게는 30초 이상 걸리는 경우가 있습니다. 만약 서비스에 적용한다고 하면 사용자 입장에서는 이 시간이 길게 느껴질 것입니다. 따라서 이 부분을 스트리밍 방식으로 출력하면 결과까지 걸리는 시간은 같지만 사용자는 기다린다는 느낌이 적어지므로 UX관점에서 해결할 수 있습니다. ChatGPT를 웹에서 사용할 때의 방식이라고 보시면 될 것 같습니다. 0. 한 번에 출력하는 방식 Koalpaca 5.8b 모델로 다음과 같은 질문을 했을 때 20초 정도가 걸렸습니다. 이걸 허깅페이스를 통해 스트리밍 방식으로 바꿔보겠습니다. %%time inputs = tokenizer("###질문:피보나치 수열을 파이썬 코드로 만들어줘", return_tensors="pt",retur..
[Python] PEFT 라이브러리 알아보기
·
Python
저번 글을 통해 LORA(Low Rank Adaptation)에 대한 원리와 공식 Github를 통해 사용법을 알아봤습니다. 이번에는 LORA를 쉽게 사용할 수 있게 해주는 PEFT (Parameter-Efficient Fine-Tuning of Billion-Scale Models on Low-Resource Hardware)에 대해 알아보겠습니다. PEFT는 LORA뿐만 아니라 P-tuning, Prompt Tuning 등의 파인튜닝을 도와주는 Huggingface에서 만든 라이브러리입니다. PEFT에서 사용가능한 파인튜닝 방법들 LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS Prefix Tuning: Prefix-Tuning: Optimizing Cont..
[Paper Review] LoRA: Low-Rank Adaptation of Large Language Models
·
AI/ML/NLP
1. Introduction 언어모델(Pretrained-language model)들의 파라미터가 기하급수적으로 늘어나면서 전체 파라미터를 파인튜닝시키는 것이 자원적으로 많은 부담이 되고 있습니다. 이러한 문제점을 보완하기 위해 사전학습 모델의 파라미터는 학습을 시키지 않고(freeze) 모델에 새로운 레이어를 추가하고 그 레이어만 학습하는 방식이 연구되고 있습니다. 대표적으로 LSTM구조의 prompt encoder를 붙인 p-tuning과 이번에 소개할 LoRA(Low-Rank Adaptation)가 있겠습니다. LoRA는 레이어 중간중간에 low-rank matrice들을 삽입함으로써 파라미터를 효율적으로 학습하는 방법을 제안했습니다. 그림과 같이 파란색 부분은 학습시키지 않고 $A(r*k)$ 와..
[SQL] Window Function (Rank)
·
SQL
1. Window Function Analytic Function으로도 불러며 행과 행간의 관계를 쉽게 정의할 수 있는 함수들입니다. group by와 비슷하게 데이터를 집계해 주지만 큰 차이점은 데이터 집합의 레벨을 유지한다는 데에 있습니다. 그중 Rank관련 함수에 대해 알아보겠습니다. 2. 사용법 다음과 같이 직원 관련 테이블에서 급여 순위(salary)를 조회할 때, 2-1. dense_rank : 공동 순위가 있을 경우 다음 순위는 밀리지 않고 이어짐 SELECT name, salary, dense_rank() over (order by salary desc) as salary_rank FROM EMP; 2-2. row_number : 공동 순위가 있더라도 고유한 순위가 매겨짐 SELECT na..
[리뷰] 영화를 빨리 감기로 보는 사람들
·
영화를 빨리 감기로 보는 사람들 - YES24 『트렌드 코리아 2023』 전미영 대표 강력 추천!대학 강의, 뉴스, [오징어 게임]까지 모두 빨리 감기로…시간은 없지만, 봐야 할 것은 넘쳐나는 시대의 콘텐츠 트렌드- 대화에 끼기 위해 인기 있는 www.yes24.com 1. 소개 요즘 저는 보고 싶은 드라마나 영화가 있으면 유튜버가 요약을 해놓은 영상을 볼 때도 있고, 정주행을 하더라도 10초, 5초 건너뛰기를 적극 활용하는 편입니다. 또 가끔은 자막을 켜고 배속으로 보는 경우도 있습니다. 엊그제 나온 더글로리도 4시간 만에 본 것 같은데 10초 건너뛰기를 얼마나 눌렀는지 모르겠습니다. 책에 의하면 시청자의 약 50% 정도가, Z세대의 약 90%가 이런 시청습관을 가진다고 하는데 이에 대한 원인을 자세히..
[Python] Folium으로 지도에 행정구역 경계 표시하기
·
Python
지리 데이터를 통해 지도에 행정구역 경계를 표시할 수 있는 folium 라이브러리의 사용법을 소개하려고 합니다. 0. 설치 pip install folium 1. 데이터 대한민국 행정동 경계 또는 통계청 API를 통해 받을 수 있습니다. 저는 API를 사용해서 데이터를 받았습니다. params = { 'accessToken': access_token, 'year':'2021', 'adm_cd':code, # 행정구역코드 2(시) or 5(구) or 8(행정동) 자리 'low_search':1 # 하위 정보 단계 } res = requests.get('https://sgisapi.kostat.go.kr/OpenAPI3/boundary/hadmarea.geojson',params=params).json() ..
[Python] selenium 사용 시 chromedriver 자동 업데이트하기
·
Python
크롤링을 위해 selenium을 사용하다 보면 크롬이 업데이트될 때마다 chromedriver도 같은 버전으로 다운받아줘야 하는 번거로움이 있습니다. 이를 위해 자동으로 chromedriver를 현재의 크롬 버전과 같도록 해주는 파이썬 패키지가 있어 소개하려고 합니다. 두 가지가 있는데 첫 번째는 chromedriver-autoinstaller이고 두 번째는 webdriver-manager입니다. chromedriver-autoinstaller 1. 설치 $ pip install chromedriver-autoinstaller 2. 메서드 get_chrome_version() : 현재 크롬 버전 확인 import chromedriver_autoinstaller ver = chromedriver_autoi..
[Paper Review] Dropout: A Simple Way to Prevent Neural Networks fromOverfitting
·
AI/ML
1. Introduction 여러 개의 비선형 은닉층을 가지는 신경망은 복잡한 관계를 학습할 수 있지만 훈련데이터가 부족한 상황에서는 과적합으로 이어질 수 있습니다. 따라서 과적합을 막기 위해 검증 세트의 성능이 떨어지기 전에 학습을 멈춘다던지, L1 및 L2 정규화 같은 가중치에 페널티를 도입하는 등의 방법이 개발되었죠. 또한 서로 다른 구조의 모델을 조합하는 Model Combination도 성능 향상에 도움이 되지만 연산량이 커진다는 단점이 있습니다. Dropout은 이런 overfitting을 방지하면서, 서로 다른 신경망을 지수적으로 결합(model combination)할 수 있게 해 줍니다. Dropout은 학습 시 신경망의 뉴런을 부분적으로 생략하는 것을 의미합니다. 학습 시 확률 $p$에..