목록분류 전체보기 (113)
헬창 개발자

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

Trainerdata = {"input_ids": [], "attention_mask": [], "labels": 1}input_ids : 토큰화된 Input Textattention_mask : 각 토큰이 실제 단어인지(1) 패딩 토큰(0)인지 나타냄labels : 입력에 대한 Ground Truth를 저장, 멀티라벨일 경우 배열을 사용하여 표현허깅페이스의 주요 입력 형식은 위와 같고 이 형식을 지켜서 trainer에 입력해야 한다.trainer = Trainer( model = model, args = args, train_dataset = train_dataset['train'], eval_dataset = train_dataset['test'], ..
Langchain의 여러가지 기능 중에 하나로 다양한 문서 분할 옵션을 제공합니다. 이를 통해 사용자는 대용량 문서를 더 작고 관리 가능한 덩어리로 나눌 수 있습니다. 다음은 LangChain의 문서 분할의 주요 기능과 예시입니다. LangChain의 문서 분할 주요 기능 CharacterTextSplitter기능: 기본적인 문자 기반 텍스트 분할기.설명: 주어진 텍스트를 문자 수를 기준으로 분할합니다.from langchain.text_splitter import CharacterTextSplittersplitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=20)chunks = splitter.split_text(text)for chunk in ..

1. nvidia-smi2. nvcc --version CUDA는 2개의 API를 가지고 있는데, 하나는 runtime API이고 다른 하나는 driver API이다.각 API가 각자의 version을 가지고 있다.nvidia-smi 의 CUDA는 runtime API를 나타내며, GPU 드라이버에 의해 설치된다.nvcc의 CUDA는 CUDA toolkit에 의해 설치된다.설치한 CUDA 버전을 확인하는건 2. nvcc --version 명령어가 옳다.* 만약 nvcc --version 명령어가 안될 경우 CUDA toolkit 을 설치해 줘야 한다. 호환되는 버전은 아래 링크 참고 Wikiwand - CUDAIn computing, CUDA is a proprietary parallel comput..

키워드 검색 (Keyword Search)시나리오 사용자가 "AI 산업혁명"을 검색합니다.결과 Keyword Search 엔진은 'AI'와 '산업혁명'이라는 단어가 포함된 문서를 찾습니다. 결과는 AI에 관한 일반적인 기사, 산업혁명에 대한 역사적 기사, 또는 단순히 'AI'와 '산업혁명'이라는 단어가 포함된 모든 문서가 될 수 있습니다. 예를 들어,“AI 기술의 최신 동향”이나 “19세기 산업혁명의 역사”와 같은 문서가 검색 결과에 포함될 수 있습니다.의미 검색 (Semantic Search)시나리오동일하게 사용자가 "AI 산업혁명"을 검색합니다.결과Semantic Search 엔진은 'AI'와 '산업혁명'의 결합된 의미와 사용자의 의도를 파악하려고 시도합니다.이 경우, 결과는 AI가 현재 산업에 어떤..

LCEL (LangChain Expression Language) LCEL은 Generative AI 애플리케이션 또는 LLM 체인 개발을 추상화하는 접근 방식으로 볼 수 있습니다. LCEL의 다양한 구성요소는 파이프 기호( |)로 구분된 순서대로 배치됩니다. 체인 또는 LCEL은 왼쪽에서 오른쪽으로 실행됩니다. 체인의 간단한 예는 다음과 같습니다. chain = prompt | model | output_parser from langchain_core.output_parsers import StrOutputParserfrom langchain_core.prompts import ChatPromptTemplateprompt = ChatPromptTemplate.from_template("tell me a..