전체 글 썸네일형 리스트형 Python에서 Thread는 어떻게 사용하는가? 파이썬은 느리다.우리가 파이썬을 처음 접했을때부터 많이 들어오던 말이다.물론, 최근에는 파이썬 내부적으로도 많은 개선이 이뤄지고 있고, C++로 동작하는 다양한 라이브러리들이 많아지면서속도에 대해 체감할 수 있는 수준의 발전이 있었다.하지만, 여전히 저수준의 언어들 C, C++, Rust 에 비해서 느린것은 사실이다. 그렇다면, 파이썬은 왜 느리고, 어떻게 개선할 수 있을까?물론, 다양한 원인과, 다양한 개선방안이 있겠지만,그 중 대표적으로 I/O 바운드 로직에서 Python에서는 GIL의 존재로 인해,병렬처리가 실질적으로 어려워 지연시간이 발생하는 문제를 그 중 하나로 꼽을 수 있다.이때, 해결방법으로 보통 떠올리는것이 Threading을 활용한 해결일것이다.다만, 모든 경우에 threading으로 해.. 더보기 Python 3.10.12 install - At distribution #Debian #Ubuntu 22.04 1) 배포판 확인cat /etc/os-release# 출력예시PRETTY_NAME="Ubuntu 22.04.3 LTS"NAME="Ubuntu"VERSION_ID="22.04"VERSION="22.04.3 LTS (Jammy Jellyfish)"VERSION_CODENAME=jammyID=ubuntuID_LIKE=debianHOME_URL="https://www.ubuntu.com/"SUPPORT_URL="https://help.ubuntu.com/"BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"UBUNTU_CODE.. 더보기 [RAG] RAPTOR(Recrusive Abstractive Processing for Tree-Organized Retrieval) Parth Sarthi et al. 2024 오늘은 올해 발행되어, RAG 시스템의 개선 아이디어를 제시한 'RAPTOR' 논문에 대해 자세히 리뷰해보려 한다. 0. 어원먼저, RAPTOR의 어원을 먼저 살펴보자.페이퍼 타이틀인 "RECURSIVE ABSTRACTIVE PROCESSING FOR TREE-ORGANIZED RETRIEVAL"를직역하면, "트리로 구성된 검색을 위한 재귀적 추상 처리"로 번역할 수 있는데,뒤에 설명하겠지만, 해당 논문은 RAG를 위한 데이터 구축 방식 및 검색 방법론을 설명하고있고, 여기서는 '트리'와 '재귀적 추상'이라는 키워드에 대해서만 주목하고 넘어가면 될 것 같다.만약, RAPTOR의 동작방식에 대해서만 빠르게 이해하고자한다면, 아래의 "2.그렇다면, RAPTOR란 무엇인가?" 의프로세스 부분만 읽어도 무방하다.. 더보기 [PEFT] LoRA(Low-Rank Adaptation of Large Language Models) Fine-Tuning 학습 방식 뜯어보기! (내부 학습 코드 해석) 오늘은 최근 Fine-Tuning 시 가장 많이 사용하는 매서드중 하나인 LoRA에 대해서 정리해보도록 하자. 먼저 LoRA는 PEFT로 대표되는 Fine-Tuning 학습 방법이고, 최근 LoRA에서 파생된, QLoRA, MoRA 등 매서드들이 소개되면서, Fine-Tuning의 주류로 자리잡고있다. LoRA를 비롯한 최근의 Fine-Tuning 방법들에 대해서 이해하기 위해서 모태가 된 PEFT 방식이왜 각광받게 되었는지 먼저 알아볼 필요가 있다. 1. DonwStream Task에 Fine-Tuning 하기에 모델이 너무 커지고 있다...몇년전부터, 대부분의 언어 모델이 규모의 경쟁으로 돌입했고,현재도 여전히 규모를 통해 성능을 끌어올린다 라는 공식에는 변함이 없다.물론 엄청난 규모의 자원과 데이터.. 더보기 [Fine-Tuning] SimCSE + LoRA를 활용해서 임베딩 모델을 Fine-Tuning해보자! Github 구현 코드 먼저 보기 : https://github.com/WontaeKim89/embedding_SimCSE_LoRA 오늘은 LoRA를 이용해서 Embedding Model을 학습하는 과정을 정리해보려 한다.구현코드 링크를 위에 첨부해두었는데,먼저 내용 이해에 도움이 되는 내용들을 아래에 정리해두었으니, 포스팅 내용을 쭉 읽어보신 후,위 링크를 통해 구현 코드를 살펴보시는걸 권장드린다. 임베딩 모델은 추천시스템, 검색, 챗봇, 번역, 감정분석, Text Summarization등거의 모든 NLP 분야에서 사용되는 매우 중요한 언어모델 분야중 하나이다.최근 워낙 생성 모델쪽으로 관심이 집중되어있고, 관련 연구도 훨씬 활발하긴 하지만, 임베딩 모델도 꾸준히 발전하고 있다.임베딩 모델은 아직까.. 더보기 [Linux]vi 탐색기 CRUD 기능 정리 1. vi 편집기 열기vi filename 2. CRUD 1) 입력 모드 전환i # 커서 앞에서 입력 2) 텍스트 입력 후 저장 및 종료ESC # 명령 모드로 전환:wq # 저장하고 종료 3) 읽기(Read) : 파일을 읽고 탐색하는 방법입니다. 기본적으로 파일을 열면 내용을 탐색할 수 있습니다.h #왼쪽으로 이동j #아래로 이동k #위로 이동l #오른쪽으로 이동Ctrl + f #한 화면 아래로 이동Ctrl + b #한 화면 위로 이동G #파일 끝으로 이동gg #파일 시작으로 이동 4) 찾기 : 특정 단어 검색 '/' 를 사용하여 파일 내에서 특정 단어를 검색할 수 있습니다./검색어 #파일에서 검색어를 찾음n #다음 검색 결과로 이동N #이전 검색 결과로 이동 5) 수정(Upd.. 더보기 Llama3-70B(Llama-cpp)로 Langchain Function Call 구현하기 오늘은 Llama-cpp와 Langchain을 이용해서 llama3 모델로 Function Call을 구현하는 과정에 대해 리뷰해보려고한다.구현 과정에서 여러 삽질을 좀 한 관계로, 비슷한 시도를 하는 분들이 있다면,시행착오를 줄였으면 하는 바램으로 진행과정을 정리해본다. 1. 왜 Langchain을 사용했는가?최근 구현되고 있는 챗봇들의 경우, 단순 질문에 대한 답변뿐아니라, 유저의 지시사항을 반영(action)할 수 있는복합적인 동작과 기능을 제공하고 있다.이와 같이 유저의 의도에 맞는 정확한 피드백을 제공하기 위해서는 LLM, RAG, Function call을 포함한 다양한 기술을 통해 답변을 처리할 수 있는 Agent 방식을 기반으로 동작하도록 챗봇을 구현해야하는데, Agent 개발을 가장 .. 더보기 Mecab 설치 및 trouble shooting 하기(+user-dict 셋팅) Mecab 을 사용하는 가장 큰 이유는 빠르면서도 뛰어난 Tokeinzing 성능과 함께 user dictionary를 활용해서특정 token의 tokenizing 형태와 우선순위를 조정할 수 있다는 점이다. 평소에 mecab을 자주 사용하지는 않기때문에, 매번 설치하고 셋팅할때마다, 여러 오류들에 직면하게 되는데정상적으로 setting을 완료하기 위한 진행 순서를 정리해보고자 한다. 먼저, mecab을 활용해 한국어를 tokenizing하기 위해서는 mecab과 mecab-ko-dic을 각각 설치해야한다.각각의 역할은 아래와 같다.1) mecab(ex. mecab-0.996-ko-0.9.2) : 해당파일은 MeCab의 핵심 엔진을 포함하고 있습니다. 이 엔진은 텍스트를 형태소 분석하는 데 사용되며, 다.. 더보기 이전 1 2 3 4 ··· 8 다음 목록 더보기