강좌
클라우드/리눅스에 관한 강좌입니다.
클라우드 분류

[KT클라우드]AI Studio 소스코드 가이드 - Python 코드 구현

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

Python 기반의 AI 모델 개발을 지원합니다. 따라서 본 코드 구현 매뉴얼은 Python 기반 모델 개발에 대해 가이드를 제공합니다.
R 환경에 대해서는 분석IDE 의 R Kernel 을 활용한 개발이 가능합니다. 단, 학습 및 서비스 배포는 불가능합니다.
기본 객체
세션 객체 생성
AI Studio와 연동을 위한 인증 작업 및 상태정보 전송 등의 기능을 수행합니다.
"""
AI Studio와 연계를 위한 기본 객체 생성
"""
from aicentro.session import Session
aicentro_session = Session(verify=False)
프레임워크별 객체 생성
모델학습 시 사용 프레임워크에 대해 AI 포탈과 연계 가능한 유틸리티 함수들을 제공합니다.
"""
학습 모델 개발 시 프레임워크별 객체 사용
:type 텐서플로우: from aicentro.framework.tensorflow import Tensorflow as AistudioFrm
:type 케라스: from aicentro.framework.keras import Keras as AistudioFrm
:type 그 외(Sklearn 등): from aicentro.framework.framework import BaseFramework as AistudioFrm
기본 사용법 : AistudioFrm(session=세션변수)
"""
from aicentro.framework.tensorflow import Tensorflow as AistudioFrm
aistudio_framework = AistudioFrm(session=aicentro_session)
디렉토리 변수 (모델학습)
AI Studio에서 생성되는 컨테이너에 동적으로 적용되는 디렉토리 정보를 사용하기 위해 제공되는 변수입니다.
해당 변수 외에 직접 경로를 지정하시면 분석 IDE 와 모델 학습 단계에서 정상적으로 학습이 수행되지 않을 수 있습니다.
모델학습 시 사용 프레임워크에 대해 AI 포탈과 연계 가능한 유틸리티 함수들을 제공합니다.
"""
AistudioFrm 객체를 활용한 AI Studio디렉토리 정보 구하기
아래 변수에 적용되는 값은 분석 IDE, 모델학습, 모델서비스 단계별로 다른 위치를 바라보게 적용됩니다.
따라서 변수로 처리 시에는 단계별로 소스 코드의 수정 없이 수행을 할 수 있습니다.
"""
# 데이터 디렉토리 절대 경로 구하기
print('프로젝트 데이터 디렉토리 : ', aistudio_framework.config.data_dir)
# 모델 결과 디렉토리 절대 경로 구하기
print('학습 모델 저장 디렉토리 : ', aistudio_framework.config.model_dir)
# 워크스페이스 디렉토리 절대 경로 구하기
print('프로젝트 사용자 워크스페이스 디렉토리 : ', aistudio_framework.config.workspace_dir)
# 워크스페이스 로그 디렉토리 절대 경로 구하기 (학습 시 생성되는 결과파일 저장 용도이며 학습 후 확인을 위함, 모델파일은 제외)
print('프로젝트 사용자 워크스페이스 로그 디렉토리 : ', aistudio_framework.config.workspace_logs)
모델 학습 코드 구성
PYTHONPATH 정의
여러 파일/디렉토리로 분리하여 프로젝트 디렉토리를 구성할 경우 workspace 디렉토리를 PYTHONPATH 로 정의해야 정상적으로 Module Import 할 수 있습니다.
( 실제 모델학습 단계에서 진행할 경우는 PYTHONPATH 가 자동으로 지정됩니다. )
root@bd40332de24ec:~# echo "export PYTHONPATH=/workspace" >> /root/.bashrc
root@bd40332de24ec:~# source /root/.bashrc
root@bd40332de24ec:~# env | grep PYTHONPATH
PYTHONPATH=/workspace
root@bd40332de24ec:~#
학습 Accuracy, Loss 메트릭 연동
현재 Tensorflow 와 Keras 를 기준으로 함수가 구성되어 있으며 Tensorflow 단독 모델일 경우 epoch 당 직접 메트릭 전송함수를 호출해야 하며, Keras 모델은 Callback 객체를 활용하여 메트릭을 전송합니다.
"""
모델 학습 시 Accuracy 와 Loss 값을 AI 포탈로 전송하여 UI 상에 노출
"""
# Tensorflow
from aicentro.framework.tensorflow import Tensorflow as AistudioFrm
aistudio_framework = AistudioFrm(session=aistudio_session)
aistudio_framework.send_metrics(epoch=1,
train_acc=0.1, 
train_loss=0.1,
valid_acc=0.1,
valid_loss=0.1)
 
# Keras                
from aicentro.framework.keras import Keras as SacpFrm
aistudio_framework = AistudioFrm(session=aistudio_session)
... 
history = aistudio_framework.get_metric_callback()
model.fit(x_train, y_train,
batch_size=batch_size,
epochs=epochs,
verbose=1,
validation_data=(x_test, y_test),
callbacks=[history])
학습결과 이미지 및 F-1 Score 저장
AI 포탈의 모델학습 화면의 기본정보 영역 내 결과 이미지 또는 F1-Score 정보를 노출하기 위해서는 제공되는 함수를 활용하여 작성해주셔야 합니다.
"""
모델 학습 후 결과를 저장하고 해당 결과를 UI 상에 노출                
"""
# Confusion Matrix                
sacp_framework.plot_confusion_matrix(                
    y_true=y_true, # Label(Y) 의 정답 (numpy.array)                
    y_pred=y_pred, # Label(Y) 의 예측결과 (numpy.array)                
    target_names=y_label, # Label(Y) 의 이름 (array)                
    title='Confusion Matrix', # matplotlib 객체의 타이틀 (옵션)                
    cmap=None, # matplotlib 의 컬러맵 plt.get_cmap('Greys') ( 기본값 : None )                
    normalize=False # 결과 값 Normalize 여부 ( 기본값 : True )                
)
                
# ROC Curve                
# 단 y_true , y_pred 는 n_classes 갯수 만큼 One-Hot 인코딩 된 상태의 2 차원 이상으로 구성되어야 함
 
sacp_framework.plot_roc_curve(                
   y_true=y_true, # Label(Y) 의 정답 (numpy.array)                
   y_pred=y_pred, # Label(Y) 의 예측결과 (numpy.array)                
   n_classes=len(y_label), # Label(Y) 의 이름 갯수                
   target_names=y_label, # Label(Y) 의 이름 (array)                
   title='ROC Curve' # matplotlib 객체의 타이틀 (옵션)                
)
                
# Classification Report

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,810 개
  • 현재 접속자 :  144 명