전체 글(92)
-
WebSocket API Gateway로 streaming 응답 받기 (feat. bedrock)
배경LLM을 이용한 서비스, 예를 들면 지식 기반의 답변을 하는 챗봇을 개발하고자 할 때 API가 필요할 수 있다. 문제는 자주 사용하는 REST API는 streaming 응답을 지원하지 않기 때문에 다른 방법으로 개발할 필요가 있다. 다음과 같은 방법들이 있다. 1. 서버를 통한 API 생성EC2와 같은 클라우드든 온프레미스 환경이든 해당 서버에서 flask나 fastapi 같은 걸로 API를 구축하여 배포하는 것이다.다만 사용자가 적을 경우 비용이 많이 든다는 단점과 어차피 서버를 띄운다면 API를 굳이 만들어야 하나? 하는 의문이 생기게 된다. 2. Lambda의 함수 URL을 이용한 streamingLambda의 기능 중 API Gateway 연결 없이 API처럼 사용할 수 있게 하는 함수 UR..
2025.03.21 -
Wheel File Packager (for Lambda Layer)
https://github.com/woojangchang/tkinter_apps/tree/master/wheel_packager목적Wheel File Packager는 .whl 및 .zip 파일을 업로드하여 자동으로 python.zip 파일을 생성하도록 돕는 앱이다.AWS Lambda Layer를 생성하기 위한 목적으로, 업로드한 .whl 파일의 압축을 해제한 후, 모든 파일을 python/ 폴더 내부에 정리하여 python.zip 파일로 압축한다. 기존 `python.zip` 파일에 추가로 압축 해제가 필요한 경우에도 사용할 수 있다.기능- .whl 및 python.zip 파일 업로드 지원- 기존 python.zip 파일과 병합 가능- 업로드한 .whl 파일을 자동으로 python/ 폴더에 정리- py..
2025.03.18 -
WSL Ubuntu에서 Vue.js 앱을 로컬호스트로 올리고 코드 수정하기
1. Vue.js 앱을 로컬호스트로 올리기(1) Ubuntu 설치2025.02.28 - [데이터 분석] - Windows에서 WSL2와 Ubuntu 설치 및 Docker 사용하기(2) Node.js 설치sudo apt updatesudo apt install nodejs npm (3) Vue CLI 설치npm install -g @vue/cli (4) 새로운 Vue 프로젝트 생성vue create my-vue-app (5) Vue 앱 실행cd my-vue-appnpm run serve `http://localhost:8080`로 접속하여 Vue 앱이 정상적으로 실행되고 있는지 확인 2. 코드 수정하기(1) Vim 사용cd my-vue-appvim src/App.vue- `i` 키로 편집 모드- 코드 수..
2025.03.17 -
Granger 인과관계
Granger 인과관계(Granger Causality)란?Granger 인과관계(Granger Causality)는 시계열 데이터의 인과관계를 통계적으로 분석하는 기법이다. "변수 X가 변수 Y의 미래 값을 예측하는 데 유의미한 정보를 제공하는가?"라는 질문에 답하기 위해 고안된 방법이다.Granger 인과관계의 핵심 개념은 시계열의 시간적 선후 관계에 있다. 단순한 상관관계와는 다르게, 과거의 X 값이 Y의 미래 값을 얼마나 잘 예측하는지를 살펴본다는 점이다.Granger 인과관계의 수학적 정의Granger 인과관계는 다음의 두 개의 자기회귀(Autoregressive, AR) 모델을 비교함으로써 정의된다.1. 기준 모델 (Baseline Model)$Y_t = \alpha_0 + \sum_{i=1}..
2025.03.12 -
Windows에서 Ollama + Open WebUI 이용하기 (Docker 이용)
OllamaOllama는 GPT-4o나 Gemini와 같은 LLM을 로컬 컴퓨터에서 돌릴 수 있도록 돕는 도구이다. 물론 오픈 소스로 풀린 LLM만 사용할 수 있긴 하지만 요즘엔 Llama나 Gemma 같은 성능이 좋은 오픈 소스 모델도 많이 등장했기 때문에 더욱 떠오르고 있는 툴이다.근데 왜 로컬 컴퓨터에서 굳이 LLM을 실행시켜야 할까? 크게 두 가지 장점이 있을 것이다.1. 보안 강화딥시크 사태에서 알 수 있듯, 웹을 통해 사용하는 LLM은 내 데이터가 유출될 가능성이 있다. 딥시크 뿐만 아니라 OpenAI의 ChatGPT도 별도 설정을 하지 않을 경우 대화 내용을 모델 학습에 사용하게 되며, 임시 채팅을 하더라도 최대 30일동안 채팅 내용을 보관하게 된다. 혹시라도 OpenAI가 해킹을 당한다면 ..
2025.02.28 -
Windows에서 WSL2와 Ubuntu 설치 및 Docker 사용하기
배경Windows 환경에서 가장 접근하기 쉬운 Docker 설치 방법은 Docker Desktop를 이용하는 것이다. 하지만 Docker Desktop은 개인 용도로 사용한다면 무료지만 상업적으로 사용하려면 돈을 지불해야만 한다.하지만 Docker Desktop이 아닌 Docker만 사용하는 것은 상업적으로 무료다. 그러므로 Windows에서 Linux 환경을 쓸 수만 있다면 Docker를 라이센스 문제 없이 상업적으로도 사용할 수 있다. 그걸 위하여 WSL2와 Ubuntu를 설치하고 해당 환경에서 Docker까지 설치해보도록 한다. WSL2 설치1. PowerShell을 관리자 권한으로 실행 2. `wsl --install` 명령어를 통해 WSL 설치기본적으로 WSL2가 설치되는데, 혹시 모르니 다음 ..
2025.02.28 -
2024 KBO MVP를 선수 스탯을 통해 머신러닝으로 예측해보기
서론올해로 4년째 해보는 토이 프로젝트이다. 먼저 결론부터 쓰자면 2024 KBO MVP는 김도영이 될 것으로 머신러닝 예측 결과가 나왔다. 2021년부터 계속해온 MVP 예측 결과를 정리하면 아래와 같다.연도예측결과2021미란다미란다2022(잊음)이정후2023페디페디2024김도영??? 2022년에는 잊고 있어서 빼먹었고, 2021, 2023년은 MVP 발표가 된 후 예측했던 거라 감흥이 적었다면 올해는 MVP 발표가 되기 전이라 결과가 기대된다. 아래부터는 어떻게 예측했는지를 설명하고자 한다. 데이터 수집 및 정제당연한 소리지만 우선 데이터를 수집해야한다. 투, 타 모두 연도별로 선수 성적 데이터를 가져오는데 전체 데이터를 가지고 오면 MVP가 매우 적은 불균형한 데이터가 된다. 이를 막기 위해 연도별..
2024.10.12 -
LangChain을 이용한 RAG - (6) 여러 문서 RAG 태우기
2024.06.03 - [AWS] - [AWS Summit Seoul 2024] LLM의 프롬프트 엔지니어링2024.07.22 - [데이터 분석/LLM] - LangChain을 이용한 RAG - (5) 생성 편아이디어이전에 AWS Summit에서 고급 RAG라고 해서, RAG로 문서와 관계 없는 질문을 하면 성능이 떨어지기 때문에 필요할 때만 RAG를 사용하도록 하라고 했었다.참고: [발표자료][생성형 AI 및 기계 학습] Amazon Bedrock을 활용한 프롬프트 엔지니어링 모범사례 (awscloud.com) 나는 이에 대해 아래와 같은 아이디어를 냈었는데 직접 구현해보기로 했다. 1. 주제가 다른 문서마다 벡터스토어를 따로 만들기2. 사용자의 질문이 들어오면 LLM을 통해 어느 벡터스토어를 거쳐야할..
2024.08.05 -
LangChain을 이용한 RAG - (5) 생성 편
2024.07.15 - [데이터 분석/LLM] - LangChain을 이용한 RAG - (4) 검색 편Augment & GenerateRetriever를 통해 찾은 문서를 프롬프트에 증강(Augment)하고 LLM을 통해 답변을 생성(Generate)하는 과정이다. 이로써 RAG의 R, A, G가 모두 제 역할을 마치게 된다. Chain을 이용한 생성LangChain에 왜 Chain이 붙었는지에 대한 이유를 여기서 알 수 있게 된다.from langchain_openai import ChatOpenAIfrom langchain_core.output_parsers import StrOutputParserfrom langchain.schema.runnable import RunnablePassthrough..
2024.07.22 -
LangChain을 이용한 RAG - (4) 검색 편
2024.07.11 - [데이터 분석/LLM] - LangChain을 이용한 RAG - (3) 벡터 DB 편Retrieve드디어 RAG의 R을 수행한다. LangChain에서는 벡터스토어를 통해 검색을 하게 되며, 3편을 보면 벡터스토어를 선언할 때 임베딩 모델을 함께 넣어주기 때문에 사용자 입력(쿼리)을 벡터스토어가 알아서 임베딩해주고 그 결과를 가지고 검색을 수행한다.vectorstore_faiss = FAISS.from_documents( documents=split_docs, embedding=hf # HuggingFaceBge 임베딩 모델) 벡터스토어를 통해 바로 검색하는 방법이 있고, 벡터스토어를 retriever(검색기)로 변환한 후 검색하는 방법이 있다.query = "리셀은 암표와..
2024.07.15