DEV
-
빈약한 도메인 모델, 풍부한 도메인 모델, DDD 그리고 캡슐화DEV 2023. 12. 31. 20:56
대부분의 비즈니스 시스템은 MVC 아키텍처를 사용하고, 빈약한 도메인 모델(anemic domain model)을 기반으로 작성되고 있다. 이 개발 방식(빈약한 도메인 모델을 기반으로 한 MVC)은 객체지향 프로그래밍 스타일에 위반될 뿐 아니라, 철저하게 절차적 프로그래밍 스타일에 해당하기 때문에 안티 패턴으로 간주되기도 한다. The anemic domain model is described as a programming anti-pattern where the domain objects contain little or no business logic like validations, calculations, rules, and so forth. The business logic is thus baked..
-
LLM기반 chatBot 설계, 구조 변화DEV 2023. 12. 29. 21:25
많은 곳에서 LLM을 활용한 챗봇 서비스가 만들어지고 있다. langchain 코드 예제를 통해 챗봇 개발의 설계, 구조의 흐름이 어떻게 변하고 있는지 조사해 보자. 1. LLM api만을 사용 단순히 LLM에게 하나의 prompt로 질의 약간 아재개그 같지만, 미국에선 먹히는 것 같다. from langchain.chat_models import ChatOpenAI from langchain.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser prompt = ChatPromptTemplate.from_template("Tell me a short joke about {topic}") mode..
-
무상태(stateless) 웹 계층에서 비정규화(de-normalization)까지DEV 2023. 12. 23. 20:30
무상태(stateless) 웹 계층 → 수평적 확장(scale out) → DB의 scale out(sharding) → 안정해시(consistent hash) → join, 비정규화(de-normalization) 무상태(stateless) 웹 계층 웹 계층에서는 상태를 갖지 않는 것이 좋다. 상태 정보를 보관하는 서버는 클라이언트 정보(상태)를 유지하여 요청들 사이에 공유되어야 한다. 이유는 수평적 확장(scale out)에 불리하기 때문 해결하기 위해서는 상태정보(사용자 세션 데이터 등..)를 웹 계층에서 제거 -> DB로 관리 무상태(stateless) 웹 계층이라 부름 사용자 A의 세션정보, 프로파일 이미지 같은 상태정보가 서버 1에 저장되면, 사용자 A를 인증하기 위해 HTTP요청이 반드시 서..
-
zero-shot-classification model 성능DEV 2023. 12. 20. 21:58
허깅페이스에서 zero-shot 모델을 파인튜닝 해봤는데, cpu만 있는 개발 서버에서는 성능이 좀 안 나온다. 개발 장비 내에서 zero-shot-classification model의 성능을 올려보자. 추가 파인튜닝 zero-shot-classification fine-turning '유저 질의 의도(도메인)를 파악할 수 있는 모델을 파인튜닝 해 볼 수 있을까?' 🫤 zero-shot-classification 모델이 레이블이 지정된 예제 세트에 대해 훈련된 다음 이전에 볼 수 없었던 클래스의 새로 developer-as-job.tistory.com 이전 글에서 파인튜닝한 모델의 레이블을 6개로 나누어 추가 파인튜닝을 함 - 방송, 인물, 주식, 환율, 장소, 영화 서비스에 붙여보려고 했는데 응답속도..
-
zero-shot-classification fine-turningDEV 2023. 12. 20. 00:43
'유저 질의 의도(도메인)를 파악할 수 있는 모델을 파인튜닝 해 볼 수 있을까?' 🫤 zero-shot-classification 모델이 레이블이 지정된 예제 세트에 대해 훈련된 다음 이전에 볼 수 없었던 클래스의 새로운 예제를 분류할 수 있는 자연어처리 작업 - 훈련 중에 모델에서 볼 수 없는 클래스를 예측하는 작업 하지만 다양한 라벨링 데이터를 확보하는 것은 어려운 일 GPT-3와 같은 거대 규모로 학습된 언어 모델은 라벨링을 거의 사용하지 않고도 태스크를 수행할 수 있음을 보여줌 하지만 GPT-3와 같은 모델을 활용해야만 가능한 작업이 나고 묻는다면 꼭 그렇지는 않다. 거대모델을 사용하지 않고 문장의 도메인을 분류해 보자. 1. Sentence Similarity task, sentence-tran..
-
API 어뷰징과 처리율 제한(rate limit)DEV 2023. 12. 17. 22:14
Rate Limit(처리율 제한) 서버가 임계치까지만 클라이언트의 요청을 허용하는 정책 Throttling이라고도 표현 필요한 이유 과도한 트래픽으로부터 서비스 보호 공정성 합리성 - 특정 클라이언트가 서버자원 독점 막기 위해 운영비용 Rate에 따라 과금을 위한 Business Model Rate limiter의 위치 서버, 클라이언트 모두 가능하겠지만, 클라이언트는 위변조가 가능하기 때문에 servier side application server에 직접 구현하거나, 미들 웨어로 rate limiter를 두어서 요청을 제한 일반적으로 rate limiter는 API gateway에 구축하는 편 - API gateway = 클라이언트의 API 요청을 적절한 서비스로 라우팅 - API Gateway가 고유..
-
chatGPT로 면담 예약 시스템 만들기DEV 2023. 12. 14. 22:41
평가 면담 연말이 되니 평가의 시즌이 왔고, 평가가 끝나자, 파트원과의 평가 면담의 시간이 되었습니다. 그런데 얼마 전 파트장이 된 저에게는 파트원들과의 면담 시간을 잡는 것도 일이더군요. 우선 저의 이미 예약된 회의시간을 면담 가능시간에서 제거해야 하고, 파트원들이 각자 가능한 시간 안에서, 다른 파트원들의 면담 시간이 겹치지 않도록 예약이 가능해야 했습니다. 저희 회사는 google workspace를 사용하기 때문에, 대부분의 이미 예약된 회의 시간은 google calendar에 등록되어 있습니다. 그렇기에 파트원들이 면담 일정을 추가할 때 google calendar에서 '시간 찾기' 기능을 사용하면 회의 가능한 시간을 찾아 주기도 하지만, 뭔가 좀 더 편한 방법이 없을까 고민했습니다. (생각..
-
HuggingFace에서 Transformer 모델을 fine-turning 해보자DEV 2023. 12. 8. 21:27
Hugging Face The platform where the machine learning community collaborates on models, datasets, and applications. https://huggingface.co/ 자연어 처리(Natural Language Processing) NLP(Natural Language Processing)란 사람의 언어와 관련된 모든 것을 이해하는 데에 중점을 둔 언어학 및 기계 학습(머신 러닝) 분야를 말합니다. NLP의 목적은 단순히 하나의 개별 단어를 이해하는 것을 넘어, 해당 단어들의 문맥을 이해하는 것 전체 문장 분류(Classifying whole sentences): 리뷰(review)의 감정(sentiment)을 식별, 이메일..