GPT 모델은 auto-regressive 모델 계열 중 하나이며 특히 GPT3는 transformer 계열 언어모델의 크기에 따른 성능을 매우 잘 보여주었다. 본 글에서는 GPT3 논문의 주요 내용 및 궁금했던 점들을 정리하고자 한다. 궁금한 점들 in-context learning이란? & few(one, zero)-shot learning이란? prompt 및 GPT3 입력 더 좋은 contextualized embedding을 얻기 위한 많은 노력들 끝에 transformer 계열 모델들이 등장했다. 이후 사전학습(pre-training)된 언어모델을 사용하기 위해서 fine-tuning을 거치면 task 데이터셋에 대해서 높은 성능을 보이는 것이 확인되었으나 이는 다음과 같은 한계점들이 있다. ..
python asyncio는 비동기 프로그래밍을 위해 python 3.4 버전에 추가된 내장 라이브러리이다. 그 이후로 계속 변화를 거치면서 사용법이 조금씩 달라졌는데, python 3.7을 기준으로 테스트해보았다. 0. Asyncio?, Aiohttp? 1) Asyncio 파이썬에서의 비동기 프로그래밍을 위한 asyncio 라이브러리는 HummingLab님의 글이나 DaleSeo님의 글에 매우 잘 설명이 되어 있다. 하나의 thread로 여러 요청에 응답하는 I/O bound한 작업에 적합하다. 2) Aiohttp aiohttp는 asyncio를 위한 http 서버/클라이언트 요청을 수행하는 라이브러리이다. 파이썬 request가 동기로 요청을 처리하기 때문에 비동기로 http 요청을 처리하기 위해서는..
가상환경 생성 conda create -n example python=3.7 가상환경 실행 conda activate example 가상환경 리스트 확인 conda env list 실행중인 가상환경 종료 deactivate 가상환경 삭제 conda env remove -n example
대용량 데이터를 처리할 때 여러개의 프로세스로 분할하여 처리하고 다시 합치고 싶은 경우들이 생각보다 빈번하다. 이때 concurrent.futures.ProcessPoolExecutor를 사용하면 매우 간단하게 처리할 수 있다. 매우 긴 배열을 process 개수만큼 잘라서 동일한 연산을 수행하고 최종 결과를 얻어오는 상황에서 사용할 수 있는 코드는 다음과 같다. 이는 배열 뿐만 아니라 pandas DataFrame 등에도 유용하게 사용할 수 있다. * ProcessPoolExecutor 병렬 연산 과정 배열을 process 개수로 나눠 chunk size 크기로 자른다.(메모리 효율성을 위해 인덱스만 저장) 배열에 적용할 함수를 정의한다. 함수를 병렬로 실행한다. 2번에서 주의할 점은 함수가 fork ..
Language Model 등 분류해야할 class 개수가 매우 많을 때 softmax 계산에서 병목 현상이 발생할 수 있다. 이를 개선하기 위한 몇 가지 방법이 있는데 이를 정리하고자 한다. 1. 문제 정의 Huge Class 분류 문제는 크게 두 가지로 나눠볼 수 있다. single class 분류: 수 많은 class들 중 하나로 분류(ex. Language Model) multi class 분류: 수 많은 class들 중 1개 이상으로 분류 논문에 따르면 Huge Class 분류 모델을 학습 시킬 때 softmax 계산 비용이 커지고 성능이 떨어진다고 한다(출처: Effectiveness of Hierarchical Softmax in Large Scale Classification Tasks, ..
pandas는 모든 데이터를 테이블 형태로 다루는데 엑셀에서 보기 편하게 특정 row들을 하나의 셀로 병합하여 저장하고 읽을 때가 있다. 1. row 병합 후 인덱스로 설정 ris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv') not_merged = ris[['species']+ris.columns[:-1].tolist()].head() print(not_merged.to_markdown()) >>>> | | species | sepal_length | sepal_width | petal_length | petal_width | |---:|:----------|---------------:|--..
파일 서버를 구축해둔 경우 client 환경(리눅스, Mac OS 등)에서 FTP로 파일을 주기적으로 가져오는 방법을 정리하고자 한다. 1. FTP 설치 1) Ubuntu에서 설치 vsftpd를 설치해준다. apt-get update apt-get install vsftpd 2) Mac OS Mac OS의 경우 Sierra부터 FTP가 내장 프로그램에서 삭제되었다고 한다. Mac의 패키지 관리 툴인 brew가 설치되어 있는 경우 inetuitls를 설치해준다. brew install inetutils 2. FTP shell script 기본 구조는 아래와 같다. #!/bin/sh SERVER="xxx.xxx.xxx.xx" # 1 PORT="1234" # 1 USER="ID" PASS="PASSWORD" ..
python과 GCP Cloud Storage을 연동시켜 두면 정적인 파일을 주기적으로 관리하기 편리하다. 이를 위해서는 GCP에서 user 인증을 하는 과정, 인증서를 발급받아 연동하는 방법 등을 거쳐야하며 이를 정리하고자 한다. 0. 사전준비 1) GCP 프로젝트, 리소스 생성 구글 Cloud Console에서 프로젝트, storage, 그리고 storage에서 bucket을 생성해둔다. 다 되었다면 Cloud Console에서 아래 화면과 같이 보인다. 2) Google Could 파이썬 라이브러리 설치 pip install google-cloud-storage 1. Google Cloud API 인증 공식 가이드 문서는 글로만 설명이 되어 있는데, 화면과 함께 정리하고자 한다. 1) 서비스 계정 ..