목록분류 전체보기 (108)
헬창 개발자
핵심 개념Graph RAG (Retrieval-Augmented Generation)대규모 언어 모델(LLM)이 전체 문서 집합에 대한 질문에 답변하기 위해, 지식 그래프를 생성하고 이를 활용해 질의 중심 요약(Query-Focused Summarization)을 수행하는 새로운 접근법기존 RAG의 한계지역적 텍스트 추출은 전체 문서 요약을 다루기에 충분하지 않음LLM의 컨텍스트 윈도우 크기 제한으로 인해 텍스트의 중요한 정보 손실제안된 해결책그래프 기반 지식 인덱스를 생성하고 커뮤니티 탐지 알고리즘(Leiden)을 적용해 효율적이고 종합적인 응답 제공문제 의식기존 RAG는 Chunk 단위로 전체 맥락을 가져오기 때문에, 전체 맥락을 가져오지 못 할 수도 있고, 전체 코퍼스에 대한 질의 중심의 추상적인 ..
윈도우(Host) WSL Docker 위와 같은 환경으로 웹 서버를 열어 통신을 하려고 서버를 열었지만, localhost:8888은 통신이 되지만, 내 아이피:8888은 통신이 안되는 현상을 겪었다. 도커 브릿지 문제인가 확인을 했지만 이상이 없었고 Docker IP:8888, WSL IP:8888 도 접속이 가능했다. 나중에 패킷을 분석해보니 윈도우(Host) WSL 이 통신이 안되고 있었다. 그러다가 포트를 8000번으로 바꿔서 통신이 되는걸 보고.. 아하 포트 포워딩을 안해줬구나 하고 깨달았다. 그래서 이 글은 윈도우 powershell 환경에서 wsl로 포트 포워딩을 하는 방법을 알려주는 글 이다.먼저 호스트에서 포트 포워딩 상태를 확인 해 보자netsh interface portproxy..
FastAPI를 사용한 파일 처리 (업로드/다운로드)FastAPI는 비동기 기반의 빠르고 유연한 웹 프레임워크로, 파일 업로드 및 다운로드와 같은 기능을 쉽게 구현할 수 있습니다. 이 글에서는 파일 업로드와 다운로드를 FastAPI를 통해 구현하는 방법을 알아보고, 파일 처리 시 UUID를 활용해 중복되지 않는 파일명을 만드는 방법까지 설명하겠습니다.FastAPI 파일 업로드의 기본 개념FastAPI에서 uploadFile 이라는 타입을 사용하여 파일을 처리합니다. 이 클래스는 파일 이름, 내용, 메타데이터 등을 관리할 수 있게 해줍니다. 이를 통해 비동기 방식으로 파일을 처리하므로 효율적이고 빠릅니다.예제파일 업로드import osimport shutilfrom uuid import uuid4from ..
데이터를 다루다 보면 사용자가 입력하는 값이 의도한 범위 내에서 유효한지 검증하는 작업이 필수적다.이를 위해 Python에서는 pydantic이라는 아주 유용한 라이브러리를 제공한다. Pydantic은 Python에서 데이터 검증 및 설정을 쉽게 할 수 있도록 도와주는 라이브러리이다. Pydantic은 Python의 타입 힌트를 활용하여 데이터의 유효성을 검사하고, 자동으로 변환하며, 데이터 모델을 정의하는 데 유용하다. 주로 FastAPI와 함께 사용되며, 데이터 모델을 정의하고 검증하는 데 강력한 도구로 기능하다. Installation pip install pydanticImportfrom datetime import datetimefrom typing import List, Optionalfro..
다음 내용은 Llama 3.1 기준으로 작성 되었습니다. 추론 메모리 요구 사항추론의 경우 메모리 요구 사항은 모델 크기와 가중치의 정확도에 따라 달라진다.다음은 다양한 구성에 필요한 대략적인 메모리를 보여주는 표이다.모델 크기FP16FP8INT48B16 GB8 GB4 GB70B140 GB70 GB35 GB 405B810 GB405 GB203 GB참고: 위에 인용된 숫자는 모델 체크포인트를 로드하는 데 필요한 GPU VRAM을 나낸다. 예를 들어, H100 노드(8x H100)는 약 640GB의 VRAM을 가지고 있으므로 405B 모델은 다중 노드 설정에서 실행하거나 더 낮은 정밀도(예: FP8)에서 실행해야 하며, 이것이 권장되는 접근 방식임. 낮은 정밀도(예: INT4)는 정확도가 다소 떨어질 수 있..
LLM(대규모 언어 모델, Large Language Model)을 특정 도메인에 효과적으로 적용하기 위해서는 몇 가지 중요한 방법론과 고려사항이 있다. 각 도메인에 맞는 최적의 방법을 선택하는 것이 중요한데, 아래 표를 봐보면 비용측면에서는 파인튜닝 비용이 비싸지만 성능은 그만큼 값을하는 결과를 보인다. 다만 매번 업데이트를 해줘야하기에 rag 방법을 썩어줄 필요가 있다. SK TECH SUMMIT 2023에서 발표된 내용으로. PEFT와 RAG PoC를 각각 진행한 결과, PEFT 단독 사용 시 데이터 수가 많아질수록 정답 비율이 증가하는 경향을 확인했지만, 지속적인 fine-tuning이 필요하고 망각 대응이 어려우며 원본 위치나 첨부파일 제공이 어렵다는 한계로 RAG 결합이 필요하다는 결과가 도출..
최근 웹 개발의 트렌드는 빠르고 효율적인 API 개발로 이동하고 있다. 그 중에서도 LLM 모델 서빙에서는 FastAPI는 특히 주목받고 있는 프레임워크이다. FastAPI는 빠른 개발 속도와 높은 성능을 자랑하며, API 설계와 문서화에서 많은 장점을 제공한다.FastAPI란 무엇인가?FastAPI는 Python 3.6 이상을 지원하며, 비동기 프로그래밍을 통해 높은 성능을 자랑하는 웹 API 프레임워크다. Starlette과 Pydantic을 기반으로 구축된 FastAPI는 다음과 같은 주요 특징을 가지고 있다.빠른 성능: FastAPI는 비동기 프로그래밍을 지원하여 매우 빠른 응답 속도를 제공. 이는 고성능 웹 애플리케이션을 구축하는 데 큰 장점이 됨.자동화된 문서화: FastAPI는 Swagger..
지인이 재미있는 데이터셋을 들고 왔다. Junnos/luckyvicky · Datasets at Hugging Face와, 첫 장거리 운전이라니 완전 설레겠다! 🚗💨 나도 처음엔 긴장했는데, 알고 보니 완전 재밌더라고! 😆 길 잃어도 괜찮아. 오히려 새로운 곳 발견할 수도 있고, 여행은 그런 게 또 매력 있잖huggingface.co 요즘 유행하는 원영적 사고 데이터셋이다. 문득 이걸로 챗봇을 만들면 재밌을거 같아서 프로젝트를 수행하기로 했다. 모델은 가벼운 모델은 찾다가 EleutherAI/polyglot-ko-5.8b 모델을 선정했다. 학습 데이터를 구성하기 위해 input/output 데이터를 전처리를 해주는 과정을 진행했다. import json from datasets import Dat..
LoRA target_modules은 특정 모델의 파인튜닝이나 훈련 시, 수정 또는 최적화하려는 모델의 모듈을 지정하는 부분입니다. 특히, "q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"와 같은 모듈 이름들은 트랜스포머(Transformer) 아키텍처와 관련이 있습니다. Attention is all you need 논문을 읽어 보신분들은 어느정도 감이 오겠지만 모르시는 분들을 위해 각 모듈이 무엇을 하는지 간단히 설명하겠습니다:트랜스포머 아키텍처에서의 주요 모듈들q_proj (query projection):쿼리 벡터를 생성하는 모듈입니다. 입력된 텍스트의 특정 부분에 대한 쿼리를 생성합니다.트랜스포머의 셀프 어텐..
다차원 리스트를 1차원 리스트로 변환하는 것은 Python에서 자주 사용되는 작업입니다. 리스트가 중첩되어 있을 때, 즉 리스트 안에 리스트가 있을 때 이를 평평하게 만들어주는 것이 필요합니다. 이를 "플래트닝(flattening)"이라고 합니다. 재귀를 사용한 flatteningdef flatten(lst): flat_list = [] for item in lst: if isinstance(item, list): flat_list.extend(flatten(item)) # 재귀 호출 else: flat_list.append(item) return flat_listnested_list = [[1, 1], [2], [2, [..