본문 바로가기
쿠버네티스,쿠버플로우

던전앤파이터 시세 예측[7]

by 세용용용용 2023. 9. 14.

진짜 다왔다 이제 하루마다 모델을 최적화해서 배포해주는 파이프라인을 구축해주자!!!

 

1. 모델 돌려서 스케일, 인코딩 객체 저장하는 코드 그리고 카팁 을위해 print("mae_validation="+str(mae_validation)) 결과 뽑아내는 이미지

 

레어 아바타

fairing-job100:2CE9050E

 

 

상급 아바타

fairing-job101:1DF32C9B

 

 

 

2. 카팁 야물파일

 

레어 아바타

apiVersion: "kubeflow.org/v1alpha3"
kind: Experiment
metadata:
  namespace: gsoh
  labels:
    controller-tools.k8s.io: "1.0"
  name: aabata-rare-experiment-v2-1
spec:
  parallelTrialCount: 2
  maxTrialCount: 40
  maxFailedTrialCount: 3
  objective:
    type: minimize # 작게해야되니까 크게하려면 maximize
    goal: 1200000  # mae 목표를 설정
    objectiveMetricName: mae_validation #변수 이름 넣어줘야됨
  algorithm:
    algorithmName: random
  trialTemplate:
    goTemplate:
        rawTemplate: |-
          apiVersion: batch/v1
          kind: Job
          metadata:
            name: {{.Trial}}
            namespace: {{.NameSpace}}
          spec:
            template:
              spec:
                containers:
                - name: {{.Trial}}
                  image: kubeflow-registry.default.svc.cluster.local:30000/fairing-job100:2CE9050E # 내가 생성한 이미지로 바꿔야됨
                  
                  command:
                  - "python" 
                  - "/app/aabata_rare.py" # 내 파이썬 파일 이름으로 설정
                  {{- with .HyperParameters}}
                  {{- range .}}
                  - "{{.Name}}={{.Value}}"
                  {{- end}}
                  {{- end}}
                restartPolicy: Never
  parameters:
    - name: --learning_rate
      parameterType: double
      feasibleSpace:
        min: "0.1"
        max: "0.3"
    - name: --n_estimators
      parameterType: int
      feasibleSpace:
        min: "30"
        max: "100"
    - name: --max_depth
      parameterType: int
      feasibleSpace:
        min: "1"
        max: "30"

 

상급 아바타

apiVersion: "kubeflow.org/v1alpha3"
kind: Experiment
metadata:
  namespace: gsoh
  labels:
    controller-tools.k8s.io: "1.0"
  name: aabata-sang-experiment-v2-1
spec:
  parallelTrialCount: 2
  maxTrialCount: 40
  maxFailedTrialCount: 3
  objective:
    type: minimize # 작게해야되니까 크게하려면 maximize
    goal: 1800000  # mae 목표를 설정
    objectiveMetricName: mae_validation #변수 이름 넣어줘야됨
  algorithm:
    algorithmName: random
  trialTemplate:
    goTemplate:
        rawTemplate: |-
          apiVersion: batch/v1
          kind: Job
          metadata:
            name: {{.Trial}}
            namespace: {{.NameSpace}}
          spec:
            template:
              spec:
                containers:
                - name: {{.Trial}}
                  image: kubeflow-registry.default.svc.cluster.local:30000/fairing-job101:1DF32C9B # 내가 생성한 이미지로 바꿔야됨
                  
                  command:
                  - "python" 
                  - "/app/aabata_rare.py" # 내 파이썬 파일 이름으로 설정
                  {{- with .HyperParameters}}
                  {{- range .}}
                  - "{{.Name}}={{.Value}}"
                  {{- end}}
                  {{- end}}
                restartPolicy: Never
  parameters:
    - name: --learning_rate
      parameterType: double
      feasibleSpace:
        min: "0.1"
        max: "0.3"
    - name: --n_estimators
      parameterType: int
      feasibleSpace:
        min: "30"
        max: "100"
    - name: --max_depth
      parameterType: int
      feasibleSpace:
        min: "1"
        max: "30"

 

 

3. 카팁 야물파일을 실행시키는 이미지

도커파일

FROM python:3.8
ENV PYTHONUNBUFFERED 1
WORKDIR /app
COPY . /app/
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

ENTRYPOINT ["python", "main.py"]

 

main.py

from kubeflow.katib import KatibClient
import yaml

def create_experiement_xgb():
        name = 'test'
        namespace = 'gsoh'

        # -------- katib 실험 생성 -------------

        # katib 클라이언트 생성
        katib_client = KatibClient()

        # 실험 구성 파일 경로
        experiment_yaml_path = 'test.yaml'

        # 실험 구성 파일을 읽어 옵니다.
        with open(experiment_yaml_path, "r") as yaml_file:
                experiment_config = yaml.safe_load(yaml_file)

        experiment_config["metadata"] = {
                "name": name, # 실험 이름
                "namespace": namespace # 실험을 생성할 네임스페이스
        }

        try:
                katib_client.create_experiment(experiment_config, namespace)
        except:
                pass
if __name__ == "__main__":
        create_experiement_xgb()

 

requirements.txt

kubeflow-katib
pyyaml

 

test.yaml >>> 레어아바타 야물파일 가져오기