java Spring Boot, CRUD API 개발을 위한 기록 -2- (아키텍처 구성과 API) Spring Boot의 기본적인 아키텍쳐와 흐름에 대해 알아보고 간단한 API 를 하나 구현 해보기로 한다.
java Spring Boot, CRUD API 개발을 위한 기록 -1- (프로젝트 생성과 의존성) 본격적인 프로젝트를 시작하기 앞서 "프로젝트 생성과 의존성"에 대해 정리를 한다.
ai / ml 뉴스 기사 수집해서 llama2 에 질의하기 (feat. Silicon 맥북 with GPU) M1/M2 같은 Silicon Mac 계열에서 GPU 를 사용하여 llama2 를 파인튜닝 해보고, 뉴스기사를 Embedding 하여 얼마나 만족스러운 답변을 하는지를 테스트 해봤다.
ai / ml Embedding으로 Llama2 응답 보정하기 (feat. langchain) 로컬머신에서 LlamaCpp 로 Llama2를 구동하고 Llama2 가 부족한 정보를 벡터디비로 보완해서 성능을 최적화 하는 과정을 정리해본다.
ai / ml KcBERT 와 파인튜닝으로 멀티라벨 악플 분류 모델 만들기 지난 포스트에 이어서 "한국어 혐오표현 데이터셋" 을 가지고, 문장이 어떤 종류의 혐오를 담고 있는지 BERT 모델 기반으로 파인튜닝하고 최적화 하는 과정을 학습차원에서 정리 해보고자 한다. GitHub - smilegate-ai/korean_unsmile_datasetContribute to smilegate-ai/korean_unsmile_dataset development by creating an account on GitHub.GitHubsmilegate-ai 1. 모델에 대하여 1) BERT BERT
ai / ml Vector DB로 악플 구분하기 feat. Weaviate Vector DB 기능을 간단히 테스트 하기 위해 혐오표현 문장을 DB 에 삽입하고, 테스트 하고자 하는 문장이 혐오표현에 가까운지 여부를 판단하는 코드를 작성해본다.
ai / ml Vector DB로 ChatGPT 보정하기 (feat. OpenAI) Vector DB를 알아보다가 간단하게 OpenAI 에서 부족한 정보를 Vector DB를 통해 보완하는 과정을 남겨본다. 1. Vector DB에 대한 소개 1) Vector 일반적으로 벡터는 크기와 방향을 가지고 있는 수치를 나타내는 개념으로 다양한 분야에서 중요한 개념으로 사용된다. 2) Vector Embedding Vector Embedding은 단어나 문장 또는 이미지, 동영상등 다양한 형태의 특징 데이터를 추출해서
flutter flutter, dynamic links 사용 구축기 flutter app 을 개발하면서 특정 도메인으로 dynamic links 를 사용한 경험을 기록한다. (개인 도메인을 사용하지 않으면 page.link 라는 도메인을 firebase 에서 제공한다.)
aws AWS, 네트워크 환경구축 AWS, lightsail 컨테이너 서비스에서 지원하는 것이 부족해서 ECS 를 무작정 사용해보고자 했다. (lightsail 컨테이너도 기반은 ECS 라고 하던데 세부적인 기능이 빠져있었다.) 먼저 lightsail 에서 벗어나 aws 상에 네트워크를 구축하는 것이 먼저 해야 할 일이었고 아래와 같이 VPC 를 구성하고 AZ 를 나누어 pubic / private zone의 구성을 만들어야 했다. 1. 네트워크
aws AWS, SES 도메인 연동 개인 프로젝트를 진행하던 도중 AWS 의 Simple Email Service 를 고려하게 됐고 연동과정을 기록해 두기로 한다. 1. 자격증명생성 과감하게 오른쪽 위 "자격증명생성" 을 클릭해봤다. 생소한 화면이나 수정하면 되지 하는 마음으로 아래와 같이 대충 입력 후 "자격증명생성" "자격증명생성" 완료 후 아래와 같이 TXT 레코드 및 CNAME 레코드를 지정 하라는 메시지를 볼
golang Golang, CGO Linux 크로스 컴파일러 * Cross Compiler 이 크로스 컴파일러는 Apple Silicon 및 Intel Mac을 모두 지원합니다. homebrew-macos-cross-toolchains/README.md at main · messense/homebrew-macos-cross-toolchainsmacOS cross compiler toolchains. Contribute to messense/homebrew-macos-cross-toolchains development by creating an account on GitHub.GitHubmessense * brew 패키지 설치 brew tap messense/macos-cross-toolchains brew install x86_64-unknown-linux-gnu brew install aarch64-unknown-linux-gnu * CrossCompile, x86_
gRPC gRPC 구현 - Client Streaming RPC #2 이번 글에서는 gRPC 의 Client Streaming RPC 예제를 구현 해보도록 한다. Client Streaming RPC 는 다량의 데이터를 스트리밍 방식으로 전송한다는 점에서 지난 글에서 다뤘던 Unary RPC 와 다르다. (아래 그림에서 왼쪽 아래) gRPC Learning (Part 1) - Yang(Bruce) Li - Medium Client Streaming RPC의 구현 시작하기 Client Streaming RPC는
gRPC gRPC 구현 - Unary RPC #1 gRPC의 대표적인 4가지 서비스 예제를 직접 구현해보고 정리해 보기로 했다. 이번 글에서는 gRPC 의 가장 단순한 서비스 형태인 Unary RPC 를 작성 해보도록 한다. Performance is not an Option - gRPC and Cassandra gRPC에 대한 소개 gRPC 프레임웍에 대한 소개는 좋은 글을 소개하는 것으로 대신하며, 다음 링크(Microservices with gRPC
benchmark uvicorn 0.16.0 성능문제 cloud 에서 uvicorn 으로 서비스 해야 하는 상황에서 어떤 구조로 서비스 하는게 효율이 좋을 지 고민 중에 다음과 같은 테스트를 진행했고 뜻밖의 상황을 기록해둔다. 테스트를 마친 지금 결론은 uvicorn 의 특정버전 문제가 아닌 듯 하다. uvicorn 이 worker 프로세스를 제어하는 방식(spawn)에서 파생된 문제로 보인다. (그렇다고 하기에도 워커가 1개일때도
benchmark python, db library benchmark (feat. sqlalchemy vs aiomysql) DB 라이브러리에서 동기처리 (sqlalchemy) 가 비동기처리 (aiomysql) 특성에 따라 어떤 차이가 있는 지 살펴봤다. 벤치마크 테스트는 Pool 을 구성하고 주요 옵션이나 기능의 차이를 살펴보고자 했다. 기본적으로 동기처리는 Pool 에서 하나씩 Connection을 사용하고 리턴하는 방식으로 처리 될 것이며, 비동기 처리는 비동기로 날라오는 요청들을 가능한 Pool 안의 Connection을 가져다 쓰고 리턴하는 방식을
python FastAPI, CRUD API 개발을 위한 기록 API에 있어 기본이 되는 CRUD API 를 개발하며 FastAPI 에 적응하기 위한 기록을 남긴다. 1. 환경세팅 1) 프로젝트 생성 poetry new apps poetry 를 통해 프로젝트를 생성하면 아래와 같은 구조를 갖게 된다. apps ├── pyproject.toml ├── README.rst ├── apps │ └── __init__.py └── tests ├── __init__.py └── test_apps.py 2) 의존성 라이브러리 설치
benchmark FastAPI (Python) vs Echo (Go) 단순 호기심에 동일 기능을 벤치마크 해봤다. 언어의 성격이나 장단이 다르니 동일한 조건의 테스트는 아니라고 생각된다. 다른 파이썬 라이브러리로도 벤치마크 해봐야겠지만, 결론적으로는 Go 로 작성된 echo 프레임웍이 RPS 면이나 응답속도로도 압도적으로 빨랐다. 1. Env * apple m1 macbook air, osx v.11.6.2 bigsur, memory 16GB 2.FastAPI (Python), MysqlDB 연동
trouble shooting fastapi 0.70.1, middleware bug fastapi 0.70.1 버전에 다음과 같이 middleware 를 사용하는 경우에 crash 되는 버그(부하발생기 사용시)가 존재하는 듯 하다. 해결방법은 전 버전(0.70.0 또는 0.68.2)으로 변경 후 동일 버그 발생하지 않음. from fastapi import FastAPI from starlette.requests import Request from app.db import
benchmark uvicorn 0.16.0 benchmark (feat. m1 mac) uvicorn 서버의 세가지 옵션 설정에 따른 성능을 평가해보고자 테스트를 진행함 1.env * apple m1 macbook air, osx v.11.6.2 bigsur, memory 16GB * Running uvicorn 0.16.0 with CPython 3.9.7 on Darwin 2.options 1) workers 작업자 프로세스의 수입니다. 기본값은 $WEB_CONCURRENCY 환경 변수인 경우를 따라가거나
trouble shooting minikube(feat. lima) 환경에서 로컬 이미지를 가져오지 못하는 문제 개발한 어플리케이션 이미지를 지난 글에서 구축한 minikube 환경에 올려 보고자 하면서 문제를 발견했다. 환경정보 * silicon m1 mac * minikube version v1.24.0 * limactl 0.7.4 로컬에서 빌드한 이미지를 minikube 환경으로 가져 오려면, 가장 간단한 방법이 도커 host 와 minikube 를 연결하는 방법인데 다음과 같이 containerd runtime 은 지원이 안되는
python ASGI 웹 프레임워크 FastAPI 를 시작하며 Python, Backend 를 시작하는 데 부족한 부분들을 정리해 보고자 한다. 1. Backend 구성 (feat. WSGI 와 ASGI) Python 의 일반적인 웹서비스에 아키텍쳐를 이해하기 위해 아래와 같은 그림을 그려봤다. 1) Web Server 웹서버의 역할은 두개로 나누어 볼 수 있다. 정적인 요청의 서빙이나 Reverse Proxy를 이용하여 어플리케이션 서버로 동적인 요청을 전달하는 용도이다.