전체 글 78

[ML OPS] 파이썬으로 딥러닝 모델 서빙하기 (ft. flask)

딥러닝 모델을 서빙하는 방식은 여러가지 방법이 있습니다. 여러가지 방법 중에서, 오늘은 flask를 활용하는 방법을 소개해보도록 하겠습니다. https://github.com/hsh2438/MLops/tree/main/1_flask_rest_api GitHub - hsh2438/MLops Contribute to hsh2438/MLops development by creating an account on GitHub. github.com 코드는 우선 위의 깃헙 레포지토리를 참고하시면 됩니다. 라이브러리 설치 필요한 라이브러리는 requirements.txt 파일에 저장해두었으므로 아래 명령을 실행하여 라이브러리를 설치해주시면 됩니다. pip install -r requirements.txt 서버 구현 f..

svelte 설치 및 세팅

프론트엔드 개발자는 아니지만, 프로토타이핑을 할 일이 있어서 몇가지 프레임워크를 보다가 svelte(스벨트)를 접하게 되어서 사용하다보니 편의성에 매료되었습니다. svelte의 특징은 다른 글에서 정리해보도록 하고, 오늘은 svelte를 세팅하는 글을 작성해보겠습니다. 먼저 svelte도 react나 vue처럼 node를 기반으로 하고 있습니다. node를 기반으로 하고 있으므로 node가 설치되어 있어야 합니다. 참고로 mac os에서 brew install node 명령어로 brew를 활용해서 간단하게 node를 설치할 수 있습니다. 공식 홈페이지에서는 svelte를 설치하는 2가지 방법을 알려주고 있습니다. (https://svelte.dev/blog/the-easiest-way-to-get-sta..

ETC/Svelte 2022.02.04

특정 port 사용 중인 process 찾기. (port is already in use / port is already allocated)

서버를 개발하고 배포하다보면 port is already allocated 혹은 port is already in use 라는 문구를 자주 보게 됩니다. 로컬에서 개발하다보면 특히 어떤 프로세스가 사용하고 있는지 기억이 안 날 때도 종종 있는데, 그럴 때 아래의 명령어를 사용하면, 해당 포트를 사용 중인 프로세스를 조회할 수 있습니다. lsof -i tcp: 자리에 조회하려는 포트 번호를 입력하면 됩니다. ex) lsof -i tcp:3000

ETC/Ubuntu 2022.02.03

[Kotlin] 스프링부트 프로젝트 생성

스프링부트 프로젝트 생성은 아래의 페이지에 접속해서 생성합니다. https://start.spring.io/ 접속하면 아래와 같이 설정하는 페이지가 보일텐데요. 여기서 원하는 옵션으로 선택하고 GENERATE를 눌러 다운받은 zip 파일을 압축해제하여 사용하시면 됩니다. 스프링은 이렇게 기본 프로젝트를 생성할 수 있는 웹페이지를 제공하고 있으니 활용해서 프로젝트를 생성해주시면 됩니다.

ETC/Kotlin 2021.08.21

[PYTHON] gmail로 메일 보내기

python에서 gmail을 연결해서 메일을 보내는 코드를 한번 작성해보겠습니다. 메일은 SMTP를 활용하는데, SMTP는 Simple Mail Transfer Protocol의 약자로서 메일을 보내는데 사용되는 프로토콜입니다. python에서 gmail로 메일을 보내기 전에, gmail 설정에서 변경해주어야 하는 것이 있습니다. 아래 이미지와 같이 IMAP 액세스를 설정해주시면 됩니다. python에서는 smtplib을 제공하여 별도의 라이브러리를 설치하지 않고도 STMP를 사용할 수 있습니다. 코드로 바로 보여드리면, 아래와 같이 사용할 수 있습니다. import smtplib from email.mime.text import MIMEText smtp = smtplib.SMTP('smtp.gmail...

python 2021.08.06

글또 5기 회고

글또 5기가 어느새 끝나서, 회고하는 시간을 벌써 갖게 되었습니다. 2주에 1번 블로그를 쓴다는 것이 생각보다 힘들었는데 어느새 글또 4기, 글또 5기까지 와서 제 블로그에도 글이 꽤 많아지게 되었네요. 글또 5기를 시작한 시점이, 이직과 딱 맞물린 시점이였는데 이직하면서 백엔드 개발자로 전향하게 되어 글또 5기 시작 직전에 ai엔지니어에서 백엔드로 조를 변경했던 것이 기억이 납니다. 그래서 5기를 하면서는 카프카, 도커, 깃, 쿠버네티스, Redis 등에 대한 글을 쓰면서 인공지능과 관련된 글을 거의 썼던 4기와는 완전히 다른 글들을 썼네요. 이직하고 백엔드 개발자로 전향하면서, 회사에서 일하면서 필요했던 기술들에 대해서 조금씩 정리를 했던 것 같습니다. 6개월이 조금 안된 시간인데 이것저것 많이 공부..

나의 이야기 2021.05.02

[Python] numpy와 랜덤함수

개요 딥러닝을 하다보면, 벡터 연산을 하는 코드를 많이 짜게 됩니다. 딥러닝을 배워서 파이썬으로 개발을 처음 하시는 분들을 보면 종종 파이썬의 기본적인 라이브러리만 활용하여 코드를 짜시는 걸 종종 보았는데요. 결론부터 말씀드리면, 그 경우 너무 느립니다. 파이썬 언어 자체가 속도가 매우 느리기 때문에, 파이썬에서는 C언어를 쉽게 연결하여 사용할 수 있는 방법이 많이 있습니다. 정말 커스텀하게 코드를 짠다면 Cython이라는 것을 사용할 수도 있고, 이미 C언어로 동작하는 라이브러리도 많이 존재합니다. 그 중에서 소개 드릴 것은 Numpy인데요. 아마 파이썬을 조금 써보신 분들은 Numpy를 많이 들어보셨을건데, 왜 써야하는 지 잘 모르시는 분들도 많으실 것 같아요. Numpy를 써야하는 이유는 연산 속도..

python 2021.04.18

[Kubernetes] Taint / Toleration

쿠버네티스 클러스터를 운영하다보면, 특정 워커에는 배포가 되지 않도록 막고 싶은 경우가 생길 수 있습니다. 예를 들어, 딥러닝 어플리케이션들이 배포되는 클러스터에서 일부 워커에만 GPU가 붙어있을 때 GPU가 필요없는 어플리케이션들은 해당 워커들에 배포가 되지 않도록 막고 싶은 경우입니다. 이럴 때 사용할 수 있는 기능이 Taint/Toleration 입니다. Taint Taint란 한국어로는 얼룩이라는 뜻으로, taint가 설정된 노드에는 일반적인 pod는 배포될 수 없으며 taint가 지정된 노드에는 toleration을 적용하면 배포할 수 있습니다. Taint 설정 방법 Taint는 아래와 같이 설정할 수 있습니다. >> kubectl taint node [NODE_NAME] [KEY]=[VALUE..

ETC/Kubernetes 2021.03.21

[git] merge, rebase

0. branch 깃에서 merge와 rebase를 알아보기 위해서는 브랜치부터 알고 넘어가야 합니다. 브랜치는 가지라는 뜻으로 소스코드를 여러 버전으로 관리할 수 있게 해줍니다. 여러 버전으로 관리함으로써, 현재 배포되어 있는 브랜치를 따로 관리하고, 기능을 개발하고 있는 버전의 브랜치 또는 급하게 수정해야되는 핫픽스 브랜치 등으로 나눠서 관리하여 코드 관리를 편하게 할 수 있습니다. 깃헙에서 레포지토리를 처음 생성하면 main이라는 기본 브랜치를 생성해줍니다. main에서 출발하는 브랜치를 생성하면, 처음에는 현재 main 브랜치와 똑같은 상태가 복사되어 새로운 브랜치가 생성이 됩니다. 브랜치 생성은 아래의 명령어로 수행할 수 있습니다. git branch new_branch 생성된 브랜치로 전환하려..

ETC/Git 2021.03.06