분류 전체보기

AI

MLOps란?

MLOps란?MLOps란 머신 러닝(Machine Learning)과 운영(Operations)을 합친 용어로 프로덕션환경에서 머신 러닝(ML) 모델이 지속적이고 안정적으로 배포되도록 유지, 관리, 모니터링 해주는 것입니다. MLOps는 머신러닝 모델 개발과 운영을 통합해 ML 시스템을 자동으로 유지, 관리, 운영합니다. MLOps의 대상은 머신 러닝 모델을 개발하는 것뿐만 아니라 데이터를 수집하고 분석하는 단계와 학습하여 배포하는 과정, 즉 전체 AI 생애 주기가 포함됩니다. 출처 : elice https://elice.io/ko/newsroom/whats_mlops 개발에도 DevOps가 있듯이 머신러닝 개발에도 MLOps가 있다.인공지능 개발에는 데이터 전처리, 학습, 평가, 추론, 모니터링 등 복..

AI

Javascript로 AI모델 추론 - Read image as float32 with Javascript

대부분 인공지능 모델은 파이썬으로 개발된다.그렇다고 인공지능 모델 서빙을 파이썬 서버로 해야되느냐? 그건아니다.가장 많이 사용되는 추론 서버로는 Nvidia Triton이 있고, 다양한 형태로 서빙될 수 있다. js를 주언어를 사용하고 있는 곳에서는 js로 서빙하고 싶을 수 있다. 그럴때 어떤 모델이든 변환을 도와주는 ONNX를 사용할 수 있다.  tensorflow로 학습한 이미지 분류 모델을 js로 변환하여 추론을 하려했다.onnx로 변환은 성공했고, 그 다음 추론을 해보아야하는데 이미지를 float으로 읽어와야하는 문제를 마주했다..!파이썬은 pillow도 있고, opencv도 있고,,(글을 쓰면서 opencv가 python 라이브러리가 아니었다는 사실이 번뜩 떠오르면서 opencv.js 가 있다는..

Projects

pm2로 알림서버 배포하기 - 무중단배포

FCM 알림 서버를 만드는 프로젝트에 참여하게 되었다. 맡게 될 서버는 FCM 알림만 담당하게 되고, 저사양 서버에서(프리티어) 작동해야되어서 가벼워야해서 노드로 구축하기로 했다. 그리고 나서 찾아보니 firebase는 Node.js를 가장 잘 지원하고 있었다. https://firebase.google.com/docs/admin/setup?hl=ko Docs에서 찾아보니 Node에서 지원하는 기능이 가장 많다! 서버를 노드로 구성하기로 하고 배포 방법을 결정해야했다. 전에 참여했던 프로젝트에서는 Nginx, Docker, Github Action으로 Blue-Green 무중단 배포를 구현했었다. 이번에는 새로운 방법을 구현해보고 싶기도 했고 도커로 서버를 띄우는 것보다 pm2로 서버를 띄우는 게 더 가..

Programming

Lambda와 S3로 Image Resize하기 (근데 이제 React를 곁들인)

화면에 여러 장의 이미지를 렌더링 해야하는 상황에서 이미지들의 로딩 속도가 느려질 수 있다. 그럴 때 사용할 수 있는 솔루션으로는 썸네일을 만들어서 사용하는 방법이 있다. 여러 이미지의 목록을 보여주어야하는 상황에서는 보통 원본 사이즈의 이미지가 필요하지 않다. 따라서 이미지 크기를 줄여서 사용할 수 있는 것! 썸네일은 여러가지 방법으로 만들 수 있지만, 오늘 알아볼 방법은 S3와 Lambda를 이용하는 방법이다! Lambda & S3 Lambda 서버리스의 핵심 기능으로 서버를 프로비저닝하지 않고도 그저 코드(함수)만으로 원하는 동작을 작동시킬 수 있는 컴퓨팅 서비스이다. 람다는 이벤트 기반으로 동작한다. 람다함수를 작동시키는 이벤트가 발생하면 등록된 코드를 실행시킨다. S3 가장 오래된 AWS 서비스..

Projects

Swap 메모리의 힘은 대단했다

백엔드 서버를 t2.micro 프리티어에서 운영하고 있습니다. t2.micro의 스펙은 1 vCPU, 1GiB RAM이고 서버에서는 nginx 도커 컨테이너 1개, spring 애플리케이션 컨테이너 1개를 운영하고 있습니다 개발하면서 서버가 불규칙적으로 다운되는 현상이 있었는데요, nginx, docker를 이용한 블루그린 배포를 하고 있는데 그 과정도 버티지 못하고 응답없는 상태가 되는 일이 아주 많았습니다. Swap 적용하기 이 문제를 해결해보기 위해 swap 메모리가 떠올랐습니다. 조금 찾아보니 ec2 상에 swap 메모리를 추가하는 것은 매우 쉬웠습니다. AWS의 문서를 그대로 따라하면 가능했습니다. 스왑 파일을 사용하여 Amazon EC2 인스턴스의 스왑 공간으로 메모리 할당 Amazon Ela..

Diary

K-DEVCON에 다녀왔다 - 이월엔 그로스

어느날 인터넷을 방황하다 개발자 행사를 알려주는 레포를 만나고 K-DEVCON 행사를 알게되어 참여하게 되었다. GitHub - brave-people/Dev-Event: 🎉🎈 개발자 {웨비나, 컨퍼런스, 해커톤} 행사를 알려드립니다. [with 남 🎉🎈 개발자 {웨비나, 컨퍼런스, 해커톤} 행사를 알려드립니다. [with 남송리 삼번지] - brave-people/Dev-Event github.com 개발자 선배들의 이야기를 듣고 앞으로의 커리어방향에 대해서 생각을 해봐야겠다라는 다짐을 하기도하고 도움이 될 만한 말씀을 여럿 들을 수 있었다. 네트워킹도 하고 싶었는데 다리 근육통 이슈와 혼자서 이런 곳 처음 가봐서 어리둥절함때문에 소극적으로 있어서 아쉬움이 좀 남는다. 기억하고 싶은 이야기들 장기적인 ..

Programming

Vue.js - data, computed, watch, methods 정리

Vue에 Root Component는 const app = createApp({});으로 생성하고 mount 를 호출하여 Html에 마운트하여 렌더링에 적용할 수 있다. Vue를 새로 시작하면서 기본 DOM 조작 방식에 대해 배웠다. DOM에 변수, 이벤트를 바인딩하는 방법을 배웠고, 각각에 차이에 대해서 정리해보자 data binding 가장 기본적인 binding은 {{ }} 구문을 이용한다. 공식문서에서 Template Syntax라고 정의하고 있다. Message: {{ msg }} 위와 같은 형태이다. {{ }} 내에는 자바스크립트 문법을 사용할 수 있다. 또 다른 바인딩 방법으로 속성 바인딩이 있다. v-bind 키워드를 사용하고 속성에 값을 바인딩할 때 사용한다. 단축해서 :id로 사용할 수..

Programming/Java

Logback의 보안 취약점 알아보기 - DBAppender는 왜 제거되었을까?

서비스 운영 전에 Log를 남기는 작업을 했다. 서비스 운영 로그를 어떻게 누적해서 기록하고 분석에 이용할 수 있을지 고민이 필요했다. 이전 프로젝트에서는 파일로 로그를 남기곤 했다. 하지만 파일로 로그를 남기기만 하면 불편한 점이 있었다. 바로 로그를 확인하려 할 때마다 서버에 접속해서 파일을 하나씩 열어봐야했다는 것이다. 또한 레벨 별로 별도의 파일로 나누는 것말고 다른 검색 방법도 딱히 없었다. 개선 방법으로 두 가지를 생각했다. 1. 로그 분석 시스템 도입 흔히 ELK 스택으로 불리는 ElasticSearch, Kibana, Logstash에 Beats가 추가되었다. 로그를 파일로 저장하고 File beats로 Logstash로 전송 후 전처리하여 ElasticSearch에 저장... 이런 플로우..

Heaea
'분류 전체보기' 카테고리의 글 목록