Kafka System

connect.Dockerfile
1
2
3
4
5
6
7
FROM confluentinc/cp-kafka-connect:7.3.0

ENV CONNECT_PLUGIN_PATH="/usr/share/java,/usr/share/confluent-hub-components"

RUN confluent-hub install --no-prompt snowflakeinc/snowflake-kafka-connector:1.5.5 &&\
confluent-hub install --no-prompt confluentinc/kafka-connect-jdbc:10.2.2 &&\
confluent-hub install --no-prompt confluentinc/kafka-connect-json-schema-converter:7.3.0
Read more »

Model API

모델 다운로드

download_model.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import os
from dotenv import load_dotenv
from argparse import ArgumentParser

import mlflow

load_dotenv()

os.environ["MLFLOW_S3_ENDPOINT_URL"] = os.environ.get("MLFLOW_S3_ENDPOINT_URL")
os.environ["MLFLOW_TRACKING_URI"] = os.environ.get("MLFLOW_TRACKING_URI")
os.environ["AWS_ACCESS_KEY_ID"] = os.environ.get("MINIO_ROOT_USER")
os.environ["AWS_SECRET_ACCESS_KEY"] = os.environ.get("MINIO_ROOT_PASSWORD")

def download_model(args):
mlflow.artifacts.download_artifacts(artifact_uri=f"runs:/{args.run_id}/{args.model_name}", dst_path=".")

if __name__ == "__main__":
parser = ArgumentParser()
parser.add_argument("--model-name", dest="model_name", type=str, default="sk_model")
parser.add_argument("--run-id", dest="run_id", type=str)
args = parser.parse_args()
download_model(args)
Read more »

Introduction

1
2
$ conda activate MLOps
$ pip install "fastapi[all]"
Example.py
1
2
3
4
5
6
7
8
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
return {"Hello": "World"}
...
  • app = FastAPI(): FastAPI 클래스의 인스턴스 생성
  • Path Operation Decorator: API 작업의 endpoint를 HTTP method를 통해 지정
    • Operation: POST, GET, PUT, DELETE 등의 HTTP method
    • Ex. @app.get("/"): FastAPI가 path /에서 GET operation 수행
  • Path Operation Function: Path operation 수행 시 실행될 Python 함수
    • Return: dict, list, str, int, Pydantic Model, etc…
Read more »

MLflow Setup

  • MLflow: A machine learning lifecycle platform
    • MLflow Tracking: 학습 과정에서의 매개 변수, 코드, 결과를 기록하고 대화형 UI로 비교할 수 있는 API
    • MLflow project: ML 코드 공유를 위한 Conda 및 Docker 기반 패키지 형식 지원
    • MLflow Models: Docker, Apache Spark, Azure ML, AWS SageMaker 등의 플랫폼에 ML 코드를 배포할 수 있는 패키징 형식 및 도구
    • MLflow Model Registry: MLflow 모델의 전체 수명 주기를 공동으로 관리하기 위한 중앙 집중식 모델 저장소, API, UI의 집합
  • Backend Store: 수치 데이터와 MLflow 서버의 정보들을 체계적으로 관리하기 위한 DB
    • 모델 데이터
      • 학습 결과
        • Accuracy
        • F1-score
      • 학습 과정의 loss
      • 모델 자체 정보 (hyperparameters)
    • MLflow의 메타 데이터
      • run_id
      • run_name
      • experiment_name
Read more »

풀이

Programmers 60059: 자물쇠와 열쇠

새로운 key를 만들어서 이동하고 회전하면 시간 복잡도가 너무 커질 것 같아서 key의 좌표를 회전된 것처럼 맵핑해줄 수 있는 convert_func 함수를 개발했다. 는 행렬 다시 만들고 이동 및 회전해도 풀 수 있음;
keylock이 겹쳐지는 순간 겹쳐지지 않은 key의 부분을 쉽게 고려하기 위해 for문을 M (len(key))에 대해 개발하였고, 해당 부분을 위해 key를 회전하는 것은 lock을 회전하는 것과 같은 성질을 이용해 lock을 회전했다.
또한 lock의 모든 부분에 일일히 key를 넣어보며 확인하면 시간 복잡도가 커질 것 같아서 key의 삽입이 필요한 구간을 idx_i_1, idx_j_1, idx_i_2, idx_j_2로 정의했다. 는 이것도 그냥 풀 수 있음;
최종적으로 꼭 key의 삽입이 필요한 구간에 대해서만 완벽히 일치하는지에 대한 여부 확인을 위한 함수 match를 수행했다.

Read more »