분류 전체보기

논문 및 개념 정리

[GPT3] 주요 내용 정리

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+aiohttp] 여러 API 비동기 호출 결과 얻기

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 요청을 처리하기 위해서는..

개발

[Miniconda] 가상환경 명령어

가상환경 생성 conda create -n example python=3.7 가상환경 실행 conda activate example 가상환경 리스트 확인 conda env list 실행중인 가상환경 종료 deactivate 가상환경 삭제 conda env remove -n example

python 메모

[python] ProcessPoolExecutor로 분할+병렬 연산

대용량 데이터를 처리할 때 여러개의 프로세스로 분할하여 처리하고 다시 합치고 싶은 경우들이 생각보다 빈번하다. 이때 concurrent.futures.ProcessPoolExecutor를 사용하면 매우 간단하게 처리할 수 있다. 매우 긴 배열을 process 개수만큼 잘라서 동일한 연산을 수행하고 최종 결과를 얻어오는 상황에서 사용할 수 있는 코드는 다음과 같다. 이는 배열 뿐만 아니라 pandas DataFrame 등에도 유용하게 사용할 수 있다. * ProcessPoolExecutor 병렬 연산 과정 배열을 process 개수로 나눠 chunk size 크기로 자른다.(메모리 효율성을 위해 인덱스만 저장) 배열에 적용할 함수를 정의한다. 함수를 병렬로 실행한다. 2번에서 주의할 점은 함수가 fork ..

Toy Projects

[연구] 분류 Class가 많을 때 Softmax 개선 방법

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, ..

python 메모

[pandas] 특정 row들의 셀 병합하여 excel로 읽고 쓰기

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 | |---:|:----------|---------------:|--..

python 메모

[pandas] warning 메세지 출력 안하기

import warnings warnings.filterwarnings(action='ignore')

개발

[FTP] 리눅스 shell script로 FPT 사용하기

파일 서버를 구축해둔 경우 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" ..

개발

[GCP] Python에서 GCP Cloud Storage 연동하기

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) 서비스 계정 ..

python 메모

[sklearn] classification_report 결과 파일로 저장하기

sklearn의 classification_report는 분류 결과값을 class별로 매우 잘 뽑아준다. from sklearn.metrics import classification_report y_true = [0, 1, 2, 2, 2] y_pred = [0, 0, 2, 2, 1] target_names = ['class 0', 'class 1', 'class 2'] print(classification_report(y_true, y_pred, target_names=target_names)) >>>> precision recall f1-score support class 0 0.50 1.00 0.67 1 class 1 0.00 0.00 0.00 1 class 2 1.00 0.67 0.80 3 accu..

개발

[jupyter] jupyterthemes로 jupyter notebook 테마 설정하기

jupyterthemes로 테마 설정하는 방법을 정리하고자 한다. 1. jupyterthemes 설치 pip install jupyterthemes 2. jupyterthemes 사용하기 1) 테마 리스트 보기 jt -l >>>> Available Themes: chesterish grade3 gruvboxd gruvboxl monokai oceans16 onedork solarizedd solarizedl 2) 테마 변경하기 테마를 변경하기 위해서는 아래 코드를 terminal이나 jupyter notebook에서 실행시켜주고, 반드시 jupyter를 껐다가 다시 실행시켜야 한다. # terminal에서 실행 시 jt -t onedork # jupyter notebook에서 실행 시 !jt -t one..

python 메모

[python] eval() 내장함수

python 예약어 중 eval이라는 예약어가 있다(무엇에 쓰는 물건인고?). 무엇인지, 언제 쓰는지 알아보자. 1. eval() python3 문서에서는 eval()에 대해 다음과 같이 설명하고 있다. eval(expression[, globals[, locals]]) ... 인자는 '문자열 및 선택적 globals 및 locals'다. (...) 반환 값은 계산된 표현식의 결과입니다. 즉 문자열이나 표현식, 변수들을 입력으로 받아 이를 계산하고 반환해주는 함수이다. 단, 문자열, 표현식, 변수들이 모두 str 타입이어야 한다. 아래는 간단한 예제이다. x = 1 eval('x+1') >>>> 2 2. 문자열 입력 requests 등으로 json, list 등의 데이터를 받는 경우 문자열로 받아지는 경..

개발

[MAC] zsh로 miniconda 실행하기(zsh: command not found)

맥OS 버전 11부터 zsh가 터미널 기본 shell script가 되었다고 한다. https://docs.conda.io/en/latest/miniconda.html 공식 미니콘다 버전(.pkg)을 다운받아 설치하고 conda list를 쳐보면 zsh.command not found라고 뜨면서 실행이 안된다. 1. Big Sur에서 conda 실행하기 아래 코드 한줄로 conda initialize를 시켜주면 base가 뜨는 것을 확인할 수 있으며 이때부터 사용가능하다. source ~/.zshrc .zshrc 파일에 PATH를 추가해줘야 한다고도 하는데 없어도 잘 돌아간다. 2. (base) 자동 활성화 해제 miniconda 또는 Anaconda를 설치하고 terminal을 실행시키면 위와 같이 (..

논문 및 개념 정리

[2020] Spot The Bot: A Robust and Efficient Framework for the Evaluation of Conversational Dialogue Systems

핵심포인트 scored-based 평가 방법론이 아닌 ranking-based 평가 방법론 제시 bot-bot conversation을 활용 0. Abstract 대화시스템(챗봇)의 기술은 계속 발전해나가고 있으나, 효율적이고 안정적인 평가 방법이 부재하다. Accuracy 기반의 측도들이 존재하나, 이러한 값들은 인간의 평가와 연관도가 낮다고 알려져 있다. 또한 기존의 평가 방법론은 인간-챗봇 대화를 통해 챗봇을 평가했었으며, 이는 비용이 클 뿐만 아니라 매우 비효율적이다. 본 연구에서는 Spot The Bot이라는 평가 방법론을 제시한다. Spot The Bot은 기존의 인간-챗봇 대화평가에서 챗봇-챗봇 대화 내역을 사용한다. 평가자는 대화 내역을 보고 해당 발화자가 챗봇인지 아닌지만을 평가하며, 최..

python 메모

[python] requests 라이브러리 한글 인코딩

⊙requests 라이브러리에서의 한글 깨짐 현상 한글의 경우 requests, 라이브러리를 통해 전달할 때, 특별히 주의해야 한다. 아래 예시처럼 json이 자동으로 ascii로 변환하기 때문에 입력이 깨져서 전달이 되기 때문이다. import json post_data = {"item": "한글 인코딩"} with open('sample.json', 'w') as f: json.dump(post_data, f) # sample.json 파일 열어보면 아래와 같이 저장되어 있음 {"item": "\ud55c\uae00 \uc778\ucf54\ub529"} 한글 데이터를 json.dump()로 저장하고 해당 파일을 열면 한글이 ascii 인코딩으로 저장이 된다. requests를 통해 데이터를 전달할 때..

Fine애플
'분류 전체보기' 카테고리의 글 목록 (7 Page)