전체 글

· MLOps
블로그에서 필요한 코드들은 https://github.com/Ssuwani/bentoml_prometheus 에 정리해두었습니다.0. 들어가며BentoML은 모델을 쉽게 패키징하고 배포할 수 있는 오픈소스 라이브러리입니다. 또한, 배포된 모델에 대한 온라인 모니터링을 지원합니다.이 글에서 수행할 과정을 간단히 그림으로 나타내면 아래와 같습니다.PyTorch로 모델 학습하고 평가하기BentoML로 모델 패키징하여 Containerize 한 뒤 배포하기Prometheus로 모델 모니터링하기1. PyTorch로 Fashion MNIST 모델을 학습하고 평가하기이 글에서 데이터 & 모델은 중요한 부분은 아니라 PyTorch 공식 문서의 Quickstart 예제를 따라 데이터를 가져오고 모델을 학습한 뒤 평가해보..
안녕하세요. 2022.05.02 ~ 2024.09.30, 약 2년 5개월간 요기요에서 근무했습니다. 기억하고 싶은 내용을 위해 글을 작성합니다.운이 좋았던 입사수많은 곳에서 서류 탈락했습니다. 놀라운 것은 요기요도 포함이었습니다. 그런데, 일주일 뒤 인사팀으로부터 전화가 왔고 면접 일정을 잡게 되었습니다. 나중에 들어보니, 리더분이 제 이력을 보고 면접을 보고 싶어 했다고 전해 들었습니다. 다시 한번 감사드립니다.마음이 힘들었던 입사 후2022.05.02회사의 건물은 생각보다 더 컸고, "이런 곳에 내가 다니다니!"라며 한참 어깨가 으쓱거렸습니다. 그리고, 사원증을 목에 걸고 다니면 기분이 좋았습니다. (입사 초기 한정..ㅋㅋ) 많은 분들께 인사하고 본격적으로 온보딩을 시작했습니다. 기대했던 것과 다르게..
데이터 표현 방식RDD구조화되지 않은 데이터도 처리할 수 있음사용자 정의 함수를 통해 데이터 변환하는 데 유연DataFrameRDD 위에 구조화된 데이터 추가한 것행과 열로 이루어져 있으며 Pandas의 Dataframe과 유사명확한 스키마를 가지고 있기에 데이터 처리 및 변환이 직관적이고 효율적API 수준RDD낮은 수준의 API 제공사용자에게 더 많은 제어권 제공map, reduce, filter 등의 함수형 프로그래밍 연산자 이용해 변환DataFrame높은 수준의 API 제공SQL 쿼리와 유사한 방식으로 데이터 처리 -> 직관적최적화된 실행 계획을 통해 효율적으로 동작성능 최적화RDD사용자 정의함수를 사용하기에 최적화 여지가 적음실행 계획 최적화하지 않음DataFrameCatalyst Optimize..
Apache spark에서는 데이터를 다루기 위해 아래 3가지 추상화 개념을 제공합니다.RDD (Resilient Distributed Datasets)DataFramesDatasets이 중 RDD에 대한 설명과 예제를 통해 이해해보고자 합니다.정의RDD는 Spark의 기본 데이터 구조로 병렬로 처리할 수 있는 불변 분산 객체 컬렉션특징메모리 내에서 처리 연산을 지원함기존 map reduce 파일 시스템과 비교했을 때의 장점생성되면 수정할 수 없음기존 RDD를 수정하는 게 아니라 새로운 RDD를 생성함. (불변성)RDD는 장애로부터 쉽게 복구할 수 있음위 불변성 덕분에 RDD 복구가 쉽고 분산 환경에서 처리되기에 Node A에서 문제시 Node B에서 수행 가능함Laze EvaluationAction 연..
· 📚책
CH0. 도입0.1. 설계가 왜 잘못되는가?시스템을 처음 구축할 때원대한 계획을 세움 (코드를 깔끔하게 질서 잡힌 상태로 유지하기 위해)하지만 시간이 지남에 따라 잘못 구현 or 엣지 케이스에 의해 망하게 됨0.2. 캡슐화와 추상화캡슐화행동의 단순화 & 데이터 감추기코드에 수행할 작업 식별 -> 객체나 함수를 부여추상화객체나 함수를 추상화라 함import requestsparsed = requests.get().json()잘 추상화 된 예시한단계 더 나아가면 작업을 식별하고 이름을 부여해서 더 높은 수준의 추상화를 할 수 있음import duckduckgoductductgo.query('Sausages').results책임 주도 설계 : 코드를 데이터나 알고리즘이 아니라 행동을 중심으로 생각0.3. 계층..
· ETC
PlantUML이란?PlantUML은 UML(Unified Modeling Language) 다이어그램을 코드로 작성할 수 있게 해주는 도구입니다. 텍스트로 다이어그램을 정의하고 이를 다양한 형식의 이미지로 변환할 수 있습니다, 개발자들이 미적 감각에 대해 신경 쓸 필요없이 복잡한 다이어그램을 쉽게 그릴 수 있도록 돕습니다. UML 다이어그램뿐만 아니라 순서 다이어그램, 활동 다이어그램, 상태 다이어그램, 유스케이스 다이어그램 등 다양한 유형의 다이어그램을 지원합니다.왜 PlantUML을 사용할까요?단순함: 텍스트 기반으로 다이어그램을 정의할 수 있어 간단하고 직관적입니다.버전 관리: 텍스트 파일로 저장되므로 Git과 같은 버전 관리 시스템에서 쉽게 추적할 수 있습니다.자동화: 코드로 작성되기 때문에 스..
· 언어모델
서비스를 하는 사람은 항상 고객이 필요하고 있다. 고객은 서비스에 대한 질문을 하고 서비스 담당자는 이에 대한 답변을 한다. 서비스가 커질수록 이에 소모되는 비용이 커진다.질문에 대한 답을 Bot이 할 수 있게 개발해보자.준비할 것LLM (Large Language Model) : 답변을 생성Chat History : 질문에 대한 답변 기록VectorDB : Chat History를 저장Slack Bot : 질문을 받고 LLM에 요청을 보낸 뒤 답변을 반환앞으로 만들 Slack Bot은 그림과 같이 아래와 같은 Step을 갖는다. 1. 채팅 히스토리를 벡터화해서 VectorDB에 넣는다. 2. Slack Bot으로 들어온 질문을 벡터화한다. 3. 유사한 히스토리를 VectorDB로 부터 찾는다. 4. 찾..
· Python
flake8을 린터로 사용하고 black을 코드포매터로 사용하고 있는데 ruff는 이 두가지 역할을 모두하며 매우 빠르다. (추가로 isort도 사용하는데, ruff를 사용하면 다 대체 가능)그냥 ruff 만을 사용하면 되는 수준이다.그리고 다양한 곳에서 사용중이다. (검증이 되었단 소리)Apache AirflowApache SupersetFastAPIHugging FacePandasSciPyGithub Star 수도 급격히 증가하고 있다.1. 설치pip를 통해 간단히 설치할 수 있다.pip install ruff2. 사용법Checkruff위는 명령어는 현재 디렉토리 하위의 .py 파일을 검사한다.check가 생략된 것으로 검사만을 수행한다.Fixruff --fixcheck된 내용을 알아서 수정해준다.3..
ssuwani
Oops!!