Skip to main content

wise-aiops

WP-Platform(wp-ml)이 쓰는 것과 동일한 저장 규칙(MySQL 메타DB WISE_PROPHET_V1, 데이터셋 파일 경로, MLflow 트래킹/아티팩트 경로)을 따르는 독립 파이썬 패키지다. JupyterHub/notebook에서도 wp-platform 저장소에 모델과 데이터셋을 저장할 수 있도록 wheel로 빌드해 pip install해서 쓰도록 설계되었다.

빌드 및 설치

빌드

cd projects/wise-aiops
pip install build
python -m build          # dist/wise_aiops-0.1.0-py3-none-any.whl 생성

설치

pip install wise_aiops

인터넷 없을 때 설치

pip install wise_aiops-0.1.0-py3-none-any.whl

환경변수 설정 (필수)

기존에는 assets/config/app.config.json 파일을 읽었지만, 이 패키지는 환경변수만으로 동작한다.

환경변수 설명
DB_HOST META_DB 호스트
DB_PORT META_DB 포트
DB_USER META_DB 사용자
DB_PASSWORD META_DB 비밀번호 — RSA로 암호화된 base64 문자열 그대로 (평문 아님)
DB_PRIVATE_KEY RSA 개인키 — PEM 텍스트를 그대로 넣거나, 마운트된 키 파일의 경로를 지정(값이 존재하는 파일 경로면 파일로, 아니면 PEM 원문으로 자동 판별)
DB_NAME META_DB 스키마명
DS_ID 데이터셋/모델 저장에 쓸 DS_MSTR.DS_ID
FILE_FORMAT 데이터셋 파일 포맷
JUPYTER_HUB_USER_NO 플랫폼 숫자 USER_NO (JupyterHub 스포너가 사용자별로 주입)
PIP_DIR servicePackage.install_package()가 쓸 오프라인 패키지 디렉터리(로컬 wheel/sdist 모음). local_dir 인자를 생략했을 때만 사용됨

JupyterHub Spawner 설정에서 사용자별 JUPYTER_HUB_USER_NO, 그리고 나머지 DB_*/DS_ID/ FILE_FORMAT 값들을 환경변수로 설정하여 구성한다.

기능 설명

serviceData : 데이터셋 저장, 불러오기, 목록 조회 기능

  • save_dataset(dataset_name, dataframe, user_no=None, ds_id=None) : 데이터셋 저장 가능. DS_VIEW_MSTR/DS_VIEW_TBL_MSTR/DS_VIEW_HISTORY에도 등록되어 data-manager UI 목록에서 조회 가능하다. 같은 dataset_name으로 다시 저장하면 새 버전(VIEW_IDX)으로 쌓인다.

    • dataset_name: 데이터셋 이름(DS_VIEW_MSTR.DS_VIEW_NM)
    • dataframe: 저장할 pandas.DataFrame
    • user_no: 생략 시 JUPYTER_HUB_USER_NO 환경변수
    • ds_id: 저장소 연결 ID(DS_MSTR.DS_ID). 생략 시 DS_ID 환경변수
    • ex) serviceData.save_dataset("aiops_sample_dataset", df, user_no=1000)
  • read_dataset(dataset, version=None, user_no=None, ds_id=None) : 저장된 데이터셋을 pandas.DataFrame으로 읽어온다.

    • dataset: 숫자(DS_VIEW_ID) 또는 문자열(DS_VIEW_NM) 둘 다 가능
    • version: 생략 시 최신 버전
    • ex) serviceData.read_dataset("aiops_sample_dataset") 또는 serviceData.read_dataset(12, version=2)
  • list_datasets(user_no=None) : 사용자가 소유한 데이터셋 목록을 조회한다(스토리지 접근 없이 메타DB만 조회).

    • user_no: 생략 시 JUPYTER_HUB_USER_NO 환경변수
    • ex) print(serviceData.list_datasets())

serviceModel : 모델 저장, 불러오기, 목록 조회 기능

  • save_model(model_obj, arg_type, model_name, *, framework_type=None, scaler=None, sample_data=None, metrics=None, params=None, target=None, label_encoder=None, source_model=None, user_no=None, ds_id=None) : 학습된 모델을 MLflow에 저장하고 DP_MODEL_MSTR/DP_MODEL_CUSTOM_MSTR에 등록한다.

    • model_obj: 학습된 모델 객체, — 필수
    • arg_type: 알고리즘의 종류, 필수 — "Classification" | "Regression" | "Clustering" 이 있음
    • model_name: 모델 이름, 필수 — 같은 이름으로 다시 저장하면 새 모델이 아니라 새 버전(MODEL_IDX)으로 저장됨
    • framework_type: 모델 프레임워크 종류. 'Scikit-learn', 'PyTorch', 'ONNX' 총 3종류가 지원되며 생략 시 model_obj 타입을 보고 자동 판별
    • scaler: 스케일러 객체
    • sample_data: 학습 데이터 예시(pandas.DataFrame이어야 함) — MLflow signature로 컬럼 스키마가 남아 나중에 get_input_schema()로 조회 가능
    • label_encoder: Classification일 때 classes_를 가진 인코더 또는 라벨 값 리스트를 직접 지정
    • ex) 파라미터 전부 다 쓸 경우 serviceModel.save_model(my_model, 'Classification', 'my_model_name', scaler = scaler, framework_type = 'Scikit-learn',sample_data=pd.DataFrame(X_train_scaled, columns=X.columns), label_encoder=targetEncoder.classes_)
    • ex) serviceModel.save_model(my_model, 'Classification', 'my_model_name')
  • load_model_file(model, model_idx=None, framework_type=None, user_no=None, ds_id=None) : 저장된 모델과 스케일러를 불러오는 기능 MLflow에 저장된 모델과 scaler를 함께 불러온다.

    • model: 숫자(MODEL_ID) 또는 문자열(MODEL_NM)로 모델을 검색
    • model_idx: 생략 시 최신 버전, 숫자면
    • framework_type: 생략 시 mlflow.pyfunc.load_model 사용
    • 반환값: (model, scaler)' — scaler를 저장하지 않았다면 scaler는 None` 값을 반환
    • ex) model, scaler = serviceModel.load_model_file("my-model")
  • list_models(model_id="", model_type=None, user_no=None) : 모델 목록을 조회하는 기능.

    • model_id: 값이 없으면 전체 목록. 숫자면 MODEL_ID, 문자열이면 MODEL_NM 기준으로 검색
    • model_type: None이면 전체, "normal"이면 커스텀 아닌 것만, "custom"이면 커스텀 모델만 목록으로 불러옴
    • ex) serviceModel.list_models() — 전체 모델 리스트 불러오기
    • ex) serviceModel.list_models(model_id="my-model", model_type="custom") - my-model 이 이름인 모델을 커스텀 모델 중에서 불러오기

servicePackage : pip 패키지 설치, 목록 조회, 삭제 기능

  • install_package(package, local_dir=None, upgrade=False, extra_args=None) : 인터넷 또는 오프라인 로컬 디렉터리에 있는 패키지를 설치하는 기능.

    • package: 패키지명
    • local_dir: 오프라인 설치 경로. 생략하면 PIP_DIR 환경변수, 그것도 없으면 인터넷(PyPI)에서 패키지명을 찾아 다운로드
    • upgrade: True--upgrade 추가
    • extra_args: pip install에 추가로 넘길 인자 리스트
    • ex) servicePackage.install_package("lightgbm==4.1.0")
  • list_packages() : 현재 파이썬 환경에 설치된 pip 패키지 목록을 조회하는 기능

    • ex) print(servicePackage.list_packages())
  • uninstall_package(package, extra_args=None) : pip으로 패키지를 삭제하는 기능.

    • package: 패키지명 또는 리스트
    • extra_args: pip uninstall에 추가로 넘길 인자 리스트
    • ex) servicePackage.uninstall_package("lightgbm")

인터넷이 되는 환경에서는 PyPI에서 바로 설치하고, 인터넷이 차단된 환경에서는 로컬 디렉터리(오프라인 wheel/sdist 모음)에서 설치할 수 있다. 로컬 디렉터리는 local_dir 인자로 넘기거나, 생략하면 PIP_DIR 환경변수를 확인한다 — 우선순위는 local_dir 인자 > PIP_DIR 환경변수 > (둘 다 없으면) 인터넷(PyPI) 설치다.


1) 인터넷에서 설치 (local_dir 미지정, PIP_DIR도 없을 때)
servicePackage.install_package("lightgbm==4.1.0")

2) 로컬 디렉터리에서 오프라인 설치 (인자로 직접 경로 지정)
servicePackage.install_package("lightgbm", local_dir="/opt/offline-packages")

3) PIP_DIR 환경변수로 오프라인 경로 지정 (local_dir 인자 생략)
   os.environ["PIP_DIR"] = "/opt/offline-packages" 가 이미 설정되어 있다고 가정
servicePackage.install_package("lightgbm")

여러 패키지를 한 번에
servicePackage.install_package(["lightgbm", "catboost==1.2"])

4) 설치된 패키지 목록 조회 (pandas.DataFrame, columns: name, version)
print(servicePackage.list_packages())

5) 패키지 삭제 (역시 문자열 또는 리스트)
servicePackage.uninstall_package("lightgbm")

패키지 구조

wise_aiops/
  __init__.py           # 공개 API export (serviceData/serviceModel/servicePackage/WiseAiops)
  _settings.py          # 환경변수 로딩
  _crypto.py            # 비밀번호 처리
  _db.py                # MetaDb — MySQL 접속/조회/삽입/갱신 최소 DAO
  _storage.py           # LOCAL/HDFS 파일 read/write 디스패치
  _mlflow_client.py     # MLflow 트래킹/아티팩트 클라이언트
  serviceData.py        # save_dataset / read_dataset / list_datasets
  serviceModel.py       # save_model / list_models / load_model_file / load_scaler_file
  servicePackage.py     # install_package / list_packages / uninstall_package
  client.py             # WiseAiops 파사드 클래스

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wise_aiops-0.0.2.post1-py3-none-any.whl (36.0 kB view details)

Uploaded Python 3

File details

Details for the file wise_aiops-0.0.2.post1-py3-none-any.whl.

File metadata

File hashes

Hashes for wise_aiops-0.0.2.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 d53c6b33570e9049de81ad71e0c454701c264c8b6fe1dbf2f0abfd523e07876a
MD5 1ba0103266b06799f77b927cc361943a
BLAKE2b-256 777f3546a56e7679e5c2a28f043e0436a0627cba0f25fd8f64579b93b87cdfdf

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.2.post1 This release

1 file

0.0.1

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page