동서대 소프트웨어중심대학사업단,동서대SW중심대학사업단

커뮤니티
동서대학교 소프트웨어중심대학사업단과 소통하는 공간입니다
home
커뮤니티
2021학년도1학기 게시판
목 록
[AI시스템설계(101)] Colab에서 TPU를 이용한 학습 방법
날짜:2021-05-28조회수:1837작성자:이종배

 

Colab 에서는 런타임 유형을 TPU로 변환한다고 해서, Tensorflow 사용 시 자동으로 TPU를 사용하지 않습니다.

기본적으로 CPU를 사용하며, TPU를 사용하려면 아래와 같은 추가 설정이 필요합니다.


TPU 클러스터 연결과 초기화


import os
import tensorflow as tf

 

TPU_PATH = f"grpc://{os.environ['COLAB_TPU_ADDR']}"

resolver = tf.distribute.cluster_resolver.TPUClusterResolver(tpu=TPU_PATH)
tf.config.experimental_connect_to_cluster(resolver)
tf.tpu.experimental.initialize_tpu_system(resolver)
TPU 사용을 위한 Strategy 설정

strategy = tf.distribute.experimental.TPUStrategy(resolver)

Strategy를 이용한 학습

with strategy.scope():
  mlp = create_model()
  mlp.compile(loss='mse', optimizer=Adam(learning_rate=0.001), metrics=['accuracy'])
  hist = mlp.fit(x_train, y_train, batch_size=128, epochs=30, validation_data=(x_test, y_test), verbose=2)

주의 사항은 모델의 생성, 컴파일, 학습이 strtegy.scope() 안에서 진행되어야 작동 됩니다.
모델의 생성은 보다 직관성을 위해 모델을 생성하는 함수 create_model 을 별도로 정의하여 사용합니다.

 

def create_model():
  mlp = Sequential()
  mlp.add(Dense(units=n_hidden1, activation='tanh', input_shape=(n_input,)))
  mlp.add(Dense(units=n_hidden2, activation='tanh'))
  mlp.add(Dense(units=n_hidden3, activation='tanh'))
  mlp.add(Dense(units=n_hidden4, activation='tanh'))
  mlp.add(Dense(units=n_output, activation='tanh'))
  return mlp
따라서 Colab에서 TPU를 모델 학습에 활용하기 위한 워크 플로우는 다음과 같습니다.
  1. Colab 런타임 유형 TPU로 변경
  2. TPU 클러스터 연결과 초기화
  3. 하이퍼 파라마터 정의 및 학습 데이터 불러오기
  4. 모델 생성 함수 정의
  5. TPU Strategy 설정
  6. Strategy Scope 를 이용한 학습 진행



첨부파일 1
첨부파일 2
작성자 : 김선용
좋은 정보 공유 감사합니다.
2021-05-29 20:48:40
삭제
작성자 : 강연우
으음 꿀팁이네요
2021-05-30 22:41:27
삭제
목 록
삭 제
수 정