목록2024/09 (13)
imhamburger 님의 블로그
1. 순열(Permutation) 순열은 순서가 부여된 임의의 집합을 다른 순서로 뒤섞는 연산이다. [1, 2, 3] 이라는 숫자들을 가지고 순열을 구현해보자.그림으로 나타내면 다음과 같다. 경우의 수는 총 6개이다.[1, 2, 3][1, 3, 2][2, 1, 3][2, 3, 1][3, 1, 2][3, 2, 1] 그리고 숫자들을 각각 i, j, k 라고할 때,i, j, k[1, 2, 3][1, 3, 2][2, 1, 3][2, 3, 1][3, 1, 2][3, 2, 1]잘 살펴보면 규칙이 있다.i 에 나왔던 수는 j 에 나오지 않는다.i 와 j 에 나왔던 수는 k 에 나오지 않는다. 1-1 반복문 사용 규칙을 이용해 반복문으로 구현해보자.for i in range(1, 4): for j in rang..
사건의 발단은... 딥러닝 구현을 위해 Tensorflow를 설치하였는데... 에러가 났다.나는 pdm 가상환경에서 설치를 하였는데, 어떤 환경이든 상관은 없는 것 같고 조금 연식이 있는 컴퓨터를 사용하고 있다면 에러가 날 수도 있다. (근데 나는 20년도에 샀눈디... 어쨋든...) 에러메세지 1: No candidate is found for `tensorflow` that matches the environment or hashes에러메세지 2: ValueError: Unable to create tensor, you should probably activate padding with 'padding=True' to have batched tensors with the same length.에러메..
지난글에서 사진을 업로드하는 기능을 만들고 업로드된 사진이 DB에 적재되는 것까지 구현하였다. 이번에 할 Task는 다음과 같다. 1. "ml-worker"라는 모듈 이어서 만들기2. "ml-worker" 모듈을 자동적으로 실행해줄 cron 세팅하기3. Docker 이미지로 만들어 실행해보기 (잘 되는지)4. 숫자이미지를 넣으면 예측해주는 기능을 진짜 딥러닝 모델 입히기5. 다시 Docker 이미지로 만들어 로컬이 아닌 AWS 에서 실행해보기6. AWS에서 도커를 실행하였을 때, 라인알람 문제 해결하기 1. "ml-worker"라는 모듈 이어서 만들기 나는 for문을 이용해 NULL이었던 prediction_result / prediction_model / prediction_time 을 채워주었었다...
MNIST 딥러닝을 시작하기 전에 사전 작업으로 파일을 업로드하면 해당 파일을 업로드할 때마다 DB에 저장시키는 기능을 구현하였다.이전에는 텍스트만 입력하면 입력한 텍스트를 DB에 저장시키는 기능을 구현하였었다. (이전글) 1. 업로드 API 구현하기 이번엔 조금 업그레이드하여 파일을 업로드할 수 있는 기능을 구현해보자!아래 코드는 FastAPI 공식문서를 참조하여 작성하였다. FastAPI에서는 다양한 기능을 간단하게 구현할 수 있어 편리하다.from typing import Annotatedimport osfrom fastapi import FastAPI, File, UploadFilefrom datetime import datetimeimport pymysql.cursorsapp = FastAPI..
아래와 같은 배포된 웹사이트가 있고,음식 이름을 입력 후 "저장" 버튼을 누르면 입력값이 MariaDB에 저장이 되게끔 만들고자 한다. 1. 기능 구현하기 웹사이트 화면 나는 웹사이트(프론트앤드)에서 입력받은 값을 FastAPI(백앤드)에서 받을 것이다.내가 만든 main.py 은 다음과 같다.from typing import Unionfrom fastapi import FastAPIfrom fastapi.middleware.cors import CORSMiddlewarefrom datetime import datetimeimport pandas as pdimport pymysql.cursorsimport csvapp = FastAPI()origins = [ "http://localhost:88..
NGINX 설정 파일은 기본적으로 /etc/nginx 디렉터리에 위치한다. 메인 설정 파일:/etc/nginx/nginx.conf 해당 디렉토리 안에 conf 파일은 NGINX의 메인 설정 파일이며, 이 파일에서 전역 설정과 기본 서버 블록 설정 등을 정의할 수 있다. 개별 서버 설정 파일:/etc/nginx/conf.d/이 디렉터리 안에 추가적인 설정 파일을 둘 수 있다. 일반적으로 새로운 사이트나 서비스에 대한 설정 파일은 이곳에 생성한다. 예를 들어, .conf 같은 개별 설정 파일을 여기에 두면 NGINX가 자동으로 로드한다. 나는 개별 서버 설정파일을 만들었다. nginx가 로드밸런싱하기 위해서는 upstream 블록이 필요하다.서버 요청을 분산시키지 않을 경우에는 upstream 블록이 필..
1. Regressor (회귀 모델) 숫자를 예측하는 모델 어떻게 사용해? 예를 들어, 집값을 예측하고 싶다면 이 모델을 사용해. 집의 크기나 위치 같은 데이터를 주면, 그 데이터를 바탕으로 "이 집은 얼마일 것 같아"라는 숫자를 예측해준다.예시: "이 집은 4억 원일 거야!" 또는 "내일 온도는 25도일 거야!" 같은 식으로 정확한 숫자를 예측하는 모델이다. 2. Classifier (분류 모델)카테고리를 예측하는 모델어떻게 사용해? 예를 들어, 어떤 이메일이 스팸인지 아닌지를 분류하고 싶다면, 이 모델을 사용해. 이메일의 내용을 보고 "이건 스팸이야" 또는 "이건 정상 메일이야"라는 식으로 분류해준다.쉽게 예시: "이 사진은 고양이야!" 또는 "이 메일은 스팸이야!" 이렇게 카테고리를 정해주는 것이 ..
*사전에 준비되어야 할 사항 1. nginx 로드밸런서만 실행시킬 EC2 인스턴스 1개2. API를 실행시킬 EC2 인스턴스 5개 (같은 API 기능을 5개의 인스턴스에 1개씩 실행)3. 성능테스트를 진행할 nGrinder 를 실행시킬 EC2 인스턴스 1개4. API 기능 도커 이미지 build 5. nginx 로드밸런서 도커 이미지 build 6. nGrinder용 EC2를 제외한 각각의 EC2 인스턴스에 Docker 설치 따라서, 총 7개의 EC2 인스턴스가 필요하다. 전체적인 그림은 다음과 같다. 사용자들은 nGrinder를 이용해 Virtual user로 세팅할 것이며, nginx를 이용한 로드밸런서가 사용자들을 분산하여 한쪽 서버에만 과부하되지 않게 처리한다. 이때, 주의해야할 것은 각 기능..
내가 만든 파일을 도커 이미지로 만들고 이미지 안에서 실행하였는데 내 컴퓨터에서 출력되는 결과가 다르게 나왔다. 기능은 length 와 weight 값을 입력하면 빙어인지 도미인지 알려주는 기능이다. 도커 안에서 실행한 결과 내 컴퓨터에서 실행한 결과 각각 파일 해시값을 출력해보니 해시값이 달랐다.파일 해시값을 출력하는 방법은 다음과 같다.md5sum {파일명} 출력된 해시값도커 > 2e886ff57183229c24e8e05084c21e74 model.pkl내 컴퓨터 > b4cce379395c6dac1cb04fc9b9c768f0 model.pkl Dockerfile은 다음과 같다.FROM ham/fishmlserv:1.1.0WORKDIR /codeCOPY src/fishmlserv/main.p..
MANIFEST.in 파일은 Python 프로젝트에서 패키지를 배포할 때 포함될 파일들을 지정하기 위해 사용한다. MANIFEST.in 파일은 Python 프로젝트에서 패키지를 만들 때, 어떤 파일들을 포함시킬지 또는 제외할지를 결정하는 "포장 리스트"라고 생각하면 된다. 예를 들어, 내가 Python 패키지를 만들어서 다른 사람들과 공유하려고 하는데, 이 패키지에는 코드 외에도 설명서(README), 라이선스(LICENSE), 그리고 예제 파일들이 함께 들어가길 원한다고 해보자. 그.런.데 이런 파일들은 기본적으로 패키지에 포함되지 않는다. 그래서 MANIFEST.in 파일을 만들어서 "이 파일들도 같이 넣어줘"라고 알려주는 것이다. 결론적으로, MANIFEST.in 파일은 Python 패키지를 배포할..