목록공부방 (41)
헬창 개발자

최근 웹 개발의 트렌드는 빠르고 효율적인 API 개발로 이동하고 있다. 그 중에서도 LLM 모델 서빙에서는 FastAPI는 특히 주목받고 있는 프레임워크이다. FastAPI는 빠른 개발 속도와 높은 성능을 자랑하며, API 설계와 문서화에서 많은 장점을 제공한다.FastAPI란 무엇인가?FastAPI는 Python 3.6 이상을 지원하며, 비동기 프로그래밍을 통해 높은 성능을 자랑하는 웹 API 프레임워크다. Starlette과 Pydantic을 기반으로 구축된 FastAPI는 다음과 같은 주요 특징을 가지고 있다.빠른 성능: FastAPI는 비동기 프로그래밍을 지원하여 매우 빠른 응답 속도를 제공. 이는 고성능 웹 애플리케이션을 구축하는 데 큰 장점이 됨.자동화된 문서화: FastAPI는 Swagger..
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..

사전 지식강화학습 딥러닝 (8) - [RL1] 강화학습(Reinforcement Learning)이란?Writer: Harim Kang 해당 포스팅은 '시작하세요! 텐서플로 2.0 프로그래밍'책의 흐름을 따라가면서, 책 이외에 검색 및 다양한 자료들을 통해 공부하면서 정리한 내용의 포스팅입니다. 해당 내용은 강davinci-ai.tistory.comGPT 구조 GPT (Generative Pre-trained Transformer) 학습시키기들어가며 오늘은 Generative Pre-trained Transformer (GPT) 의 구조에 대해 자세히 글을 써보려고 한다. 아래의 링크들은 참고하면 좋을만한 사이트들이다. 특히 유튜브 영상은 ETRI 임준호 박사님이 GPT-3에ainote.tistory.c..

AI 챗봇은 이제 우리 일상에서 중요한 역할을 하고 있습니다. 특히, LLM(Large Language Model, 대규모 언어 모델) 을 기반으로 한 대화형 AI 시스템이 점점 더 발전하고 있죠.하지만 여전히 해결해야 할 세 가지 큰 문제점이 있습니다.최신 정보 반영의 어려움대부분의 챗봇은 사전 학습된 데이터를 기반으로 동작하기 때문에, 새로운 정보나 실시간 데이터를 반영하기 어렵습니다.예를 들어, "2024년 최신 스마트폰 리뷰 알려줘!" 라고 질문하면, 챗봇이 2023년 기준의 정보를 제공할 가능성이 높죠.할루시네이션(Hallucination) 문제AI가 잘못된 정보를 사실처럼 생성하는 현상을 할루시네이션이라고 합니다.이는 모델이 학습한 데이터의 부족, 모순된 정보, 혹은 문맥을 완벽히 이해하지 못..