묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
llm 파인튜닝 deepspeed checkpointing 용량 초과 이슈
혹시 deepspeed로 학습중에 checkpoint가 ssd 용량을 너무 많이 잡아먹지 않게 하려면 어떻게 해야 하나요?? 클라우드 머신으로 10시간짜리 학습중간에 멈춰버려서.. 넉넉찮은 주머니 사정에 타격이 오고 있습니다. 체크포인팅을 할려고 해도 이상하게 용량이 순식간에 300GB를 먹어버리더라구요. 그래서 용량 초과로 에러가 나서 학습이 멈춰버리는 상황입니다. 혹시 이러한 경험 해보셨다면 지혜를 나눠주시면 정말 감사드리겠습니다(- -)(_ _)
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
torch.model.nn to unity onnx로 변환 후 사용 가능한가요?
안녕하세요. torch model의 checkpoint를 onnx로 conversion 했을 때, 유니티의 agent에 해당 onnx를 load시, version_number 비롯한 여러가지 필요 constant가 없어서 실패합니다. 방법이 있을까요?현재 torch로 학습된 모델을 Webgl로 빌드해서, aws에 hosting을 계획하고 있습니다. (Webgl hosting Build Link)ppo나 sac로 학습하면 onnx로 나와서 해당 onnx를 붙여서 하는건 이슈가 없습니다만,유니티가 제공하지 않는 알고리즘으로 (muzero)를 구현해서 붙일려고하니 torch에서 학습한 prediction, representation, dynamic 모델을 unity에서 사용가능한 onnx로 변환을 실패하고 있습니다. 아니면 torch로 학습한 모델을 퍼블리싱하는 다른 방법이 있을까요?학습된 모델을 서버로 띄어서 통신으로 하는 방법 정도가 생각납니다만, 서버를 사용하지 않고 클라이언트로만 해결 가능하면 좋겠습니다.
-
미해결
Tensorflow checkpoint 기능 활용 방법
안녕하세요 딥러닝을 구글colab을 이용하여 공부중인데 현재 이미지 학습 부분을 공부하고 있습니다. 하지만 결제를 하여도 런타임이 24시간이 한계라 훈련이 자꾸 중단되어 epoch를 전부 학습하지 못하고 있습니다! 그래서 1epoch마다 checkpoint를 저장하는 방법을 사용하여 훈련을 하고 있고, 현재 잘 저장이 되고 있습니다. 하지만 저는 항상 3/10 epoch에서 24시간이 지나 훈련이 중단 되는데 그러면 이때 3 까지 저장된 checkpoint를 불러와서 다시 4epoch부터 재 학습을 시킬수 있는방법이 궁금합니다! 검색을 해 보았지만 전부 학습이 완료된 데이터를 불러오는 예제 밖에 없어서 질문 남깁니다! 제가 사용한 코드는 아래와 같습니다. from fastai.imports import * from tensorflow.keras import datasets, layers, models, losses, Model from tensorflow import keras import tensorflow as tf from keras.layers import Dense,Dropout,Activation,Add,MaxPooling2D,Conv2D,Flatten,BatchNormalization from keras.models import Sequential from keras.preprocessing.image import ImageDataGenerator from keras import layers import seaborn as sns from keras.preprocessing import image import numpy as np import cv2 from google.colab.patches import cv2_imshow import matplotlib.pyplot as plt plt.style.use('seaborn-white') data_path = '/content/drive/MyDrive/train_val_data' train_dir = os.path.join(data_path,'train') val_dir = os.path.join(data_path,'test') classes = os.listdir(train_dir) train_datagen = tf.keras.preprocessing.image.ImageDataGenerator( width_shift_range = 0.2, height_shift_range = 0.2, zoom_range = 0.2, vertical_flip=True, rescale = 1. / 255, fill_mode='nearest') val_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale = 1. / 255) train_generator = train_datagen.flow_from_directory( train_dir, target_size=(224,224), batch_size = 32, class_mode = 'categorical' ) val_generator = val_datagen.flow_from_directory( val_dir, target_size=(224,224), batch_size = 32, class_mode = 'categorical' ) base_model = tf.keras.applications.ResNet50(weights = 'imagenet', include_top = False, input_shape = (224,224,3)) for layer in base_model.layers: layer.trainable = False x = layers.Flatten()(base_model.output) x = layers.Dense(720, activation='relu')(x) predictions = layers.Dense(360, activation = 'softmax')(x) opt = tf.keras.optimizers.Adam(learning_rate=0.001) checkpoint_path = "/content/drive/MyDrive/training_resnet50/resnet50_cp.ckpt" checkpoint_dir = os.path.dirname(checkpoint_path) # 체크포인트 콜백 만들기 cp_callback = tf.keras.callbacks.ModelCheckpoint(checkpoint_path, save_weights_only=True, verbose=1) head_model = Model(inputs = base_model.input, outputs = predictions) head_model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy']) history = head_model.fit(train_generator, validation_data=val_generator, batch_size=32, epochs=100, callbacks = [cp_callback])