본문 바로가기

전체 글

[NLP] OpenAI GPT-3 에서 토큰을 선택하는 방식 (feat. 샘플링) 최근 대규모 언어 모델(LLM)을 사용하여 서비스를 내놓는 스타트업이 많아지고 있다. 우리 팀에서도 문장 생성을 위한 서비스를 준비하고 있고, 따라서 gpt-3와 hyperCLOVA로 퓨샷러닝, 프롬프트 튜닝을 진행하며 테스트를 수행하고 있다. 그 과정에서 내가 수행중인 태스크에 대해 최적의 결과를 내기 위해 프롬프트 튜닝 및 파라미터 조정을 진행하면서 공부한 것들에 대해 기록하고자 한다. GPT가 문장을 생성하는 과정 GPT 모델은 기본적으로 여러 트랜스포머 레이어를 통해 연산을 진행한다. 트랜스포머에서 인코더를 제외하고 디코더만 사용하며, 결과로 산출되는 벡터를 이용하면 다음 위치에 적합한 각 단어들이 지니는 확률 값을 추출해 낼 수 있게 된다. 확률값 추출 과정 마지막 레이어의 Hidden stat.. 더보기
[Redis] redis 클러스터 모드 설치 및 multi command test redis cluster? cluster 구성은 v3.0부터 가능합니다. 1000대의 노드까지 확장 가능합니다. 각 노드 별로 중지, 추가, 삭제가 가능하며 cluster를 중지할 필요가 없습니다. 16383개의 slot을 가지고 있으며 0~16382의 번호를 가지고 있습니다. 각 node는 slot을 나누어 가집니다. 최소 3개의 master node가 필요합니다. cluster 사용 시 0번 DB만 사용 가능합니다. 장애 복구 시나리오가 필요합니다. 클러스터 구성시 알아야 할 점 cluster는 16383개의 slot으로 구성 → 각 노드가 이 슬롯을 나누어 가짐 clustert 구성 시 최소 3개의 node 필요 cluster 구성 시 0번 DB만 사용 가능 기본 포트 외에 +1000번 포트를 사용.. 더보기
[리뷰] 빅데이터 시대, 성과를 이끌어 내는 데이터 문해력 데이터를 활용할 때 생각해야 할 것 데이터 분석을 통해 얻을 수 있는 결과가 목적을 잘 반영하고 있는지는 데이터의 양과 분석 방법에 좌우되지 않는다. 데이터 분석이란 눈앞의 데이터로부터 어떤 패턴을 추출하는 것이 아니다. ‘데이터를 통해 판독'한 정보는 아무리 훌륭한 데이터 사이언스를 구사하더라도 시사점(인사이트)라고 할 수 없다. ‘데이터 분석 방법'과 ‘데이터 분석을 활용하는 방법'은 전혀 다른 개념이다. 목적이 애매하면 그것이 잘 풀릴지는 운에 의지하게 된다. 애당초 잘 풀리고 있는지 어떤지조차 평가할 수 없겠지만. ‘분석’도 ‘데이터’도 어디까지나 수단이고 도구일 뿐, 답을 제시해주지 않는다. ‘데이터 분석을 통해 성과를 낸다’는 것은 ‘나무로 가구를 만든다’에 비유된다. 좋은 목재(데이터)가 있.. 더보기
[Spark] Apache Arrow란? (Zero-Copy 직렬화에 대하여) Apache Arrow란? 서로 다른 데이터 인프라가 서로 간의 데이터 공유를 위해 API를 이용할 때 발생하는 문제점 중 하나는 직렬화와 역 직렬화의 오버헤드가 너무 높다는 것이다. 이는 애플리케이션 성능의 병목을 초래한다. Arrow는 언어, 플랫폼과 상관없이 메모리 상에서 컬럼 구조로 데이터를 정의하여, CPU와 GPU에서 메모리를 빠르게 읽고 쓸 수 있도록 한다. 직렬화(Serialization)란? 객체를 저장하거나 메모리, 데이터베이스 혹은 파일로 옮길 때 필요한 것이 직렬화이다. 직렬화란 객체를 바이트 스트림으로 바꾸는 것, 즉 객체에 저장된 데이터를 스트림에 쓰기(write) 위해 연속적인(serial) 데이터로 변환하는 것이다. 직렬화의 주된 목적은 객체를 상태 그대로 저장하고 필요할 때.. 더보기
[NLP/논문리뷰] How Contextual are Contextualized Word Representations? Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings How Contextual are Contextualized Word Representations? Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings Kawin Ethayarajh - Stanford University Accepted to EMNLP 2019 https://arxiv.org/abs/1909.00512 Abstract 본 논문은 “Contextualized Word Representation이 얼마나 문맥적인가?” 에 대한 분석 및 실험을 진행한다. 논문의 주요 포인트는 다음과 같다. Mesures of Contextuality Contextuality 에 대한 정량적인 평가 기준을 제시한다. Findings: Static vs. C.. 더보기
[Mediawiki] 미디어 위키 속도 향상 ( Feat. Fatal error: Maximum execution time of ... seconds exceeded in 에러 ) 1. 문제 상황 미디어 위키 api를 날릴 때, 위키 내에 검색 결과는 존재하지만 페이지로 연결이 안되는 이슈가 있었다. 이때, api는 Maximum execution time인 120 second 동안 계속해서 요청을 시도하게 되고 전체 위키 페이지의 데이터 수집시 병목이 발생하였다. 해당 상황에 대한 임시방편 대안으로 고안한 것은 maximum time을 좀 더 작게 잡고 해당 시간 내에 도달하지 않는 경우 없는 문서로 취급하여 넘기도록 하는 것이었다. 2. Maximum execution time 설정 1. 미디어 위키 설치 시 생성한 LocalSettings.php 를 찾는다. Ex) /opt/lampp/htdocs/mediawiki-1.36.1/ 2. LocalSettings의 하단부에 set.. 더보기
[Spark] 하둡 hdfs 파일 하나로 합쳐 local에 내려받기 (getmerge, *.gz파일) 1. 압축파일이 아닐 경우 hdfs에 나누어 저장되어 있는 파일들을 합쳐서 로컬로 받고 싶은 경우에는 -getmerge 명령어를 사용하고, 파티션들이 저장되어 있는 상위 디렉토리를 hdfs 경로로 준다. $ hdfs dfs -getmerge [hdfs 경로] [내려받을 local위치] Ex) 위의 경우에는 20211204_161503_442837 디렉토리 내에 파일들이 나누어져 저장되어있기 때문에 해당경로까지를 첫 번째 인자로 넣어준다. $ hdfs dfs -getmerge /user/nauts/warehouse/anchor_set/wiki/all/20211204_161503_442837 [local위치] 2. 압축 파일일 경우 하지만 나누어져있는 파일이 다음과 같이 .gz와 같은 압축 파일인 경우에는 .. 더보기
[Python/NLP] 위키피디아 덤프 데이터에서 하이퍼링크(anchor text) 추출하기 wiki의 dump 데이터에서 plain text를 추출하기 위한 도구로써 wiki extractor를 패키지가 존재합니다. 해당 방법에 대한 포스트는 다음 글에서 자세히 설명하고, 이번 글에서는 html태그를 포함한 plain text가 준비되었다는 전제 하에 앵커 텍스트를 추출하는 방법에 대해 소개하고자 합니다. Anchor text (앵커 텍스트) anchor text는 HTML 하이퍼 링크에서 볼 수 있고 클릭 가능한 텍스트입니다. "anchor"라는 용어는 현재 a 요소 또는 라고하는 HTML 사양의 이전 버전에서 사용되었습니다. 위키 페이지 내에서는 파란색으로 나타나는 텍스트가 anchor text 이며, 해당 텍스트는 위키 내에서 자신만의 고유한 페이지가 존재 합니다. 위의 섹션을 개발자 도.. 더보기