PyTorch ONNX에서 CNTK까지 튜토리얼 - 딥 러닝 AMI

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

PyTorch ONNX에서 CNTK까지 튜토리얼

참고

V28 릴리스부터 CNTK, Caffe, Caffe2 및 Theano Conda 환경은 더 이상 AWS Deep Learning AMI 에 포함되지 않습니다. 이러한 환경을 AWS Deep Learning AMI 포함하는 이전 릴리스는 계속 사용할 수 있습니다. 그러나 이러한 프레임워크에 대해 오픈 소스 커뮤니티에서 게시한 보안 픽스가 있는 경우에만 이러한 환경에 대한 업데이트를 제공합니다.

ONNX 개요

Open Neural Network Exchange(ONNX)는 딥 러닝 모델을 나타내는 데 사용하는 열린 포맷입니다. Amazon Web Services, Microsoft, Facebook 및 기타 여러 파트너가 ONNX를 지원합니다. 선택한 아무 프레임워크를 사용하여 딥 러닝 모델을 디자인, 교육 및 배포할 수 있습니다. ONNX 모델의 이점은 프레임워크 간에 이동이 간편합니다.

이 자습서는 ONNX 지원 Conda를 사용하는 DLAMI 사용법을 보여줍니다. 이 단계를 따라함으로써 하나의 프레임워크에서 모델을 교육하거나 사전 교육된 모델을 로드하고, 이 모델을 ONNX로 내보내고, 다른 프레임워크로 이 모델을 가져올 수 있습니다.

ONNX 사전 조건

ONNX 자습서를 사용하려면 Conda를 사용하는 DLAMI 버전 12 이상에 액세스해야 합니다. Conda를 사용하는 DLAMI 시작에 대한 자세한 내용은 Conda를 사용하는 Deep Learning AMI를 참조하세요.

중요

이 예제는 최대 8GB의 메모리(또는 그 이상)가 필요할 수 있는 기능을 사용합니다. 메모리가 충분한 인스턴스 유형을 선택해야 합니다.

Conda를 사용하는 DLAMI로 터미널 세션을 시작하고 다음 자습서를 시작합니다.

PyTorch 모델을 ONNX로 변환한 다음 모델을 CNTK로 로드합니다.

먼저 환경을 활성화합니다. PyTorch

$ source activate pytorch_p36

텍스트 편집기로 새 파일을 만들고 스크립트의 다음 프로그램을 사용하여 모의 모델을 학습시킨 다음 ONNX 형식으로 내보냅니다. PyTorch

# Build a Mock Model in Pytorch with a convolution and a reduceMean layer\ import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.autograd import Variable import torch.onnx as torch_onnx class Model(nn.Module): def __init__(self): super(Model, self).__init__() self.conv = nn.Conv2d(in_channels=3, out_channels=32, kernel_size=(3,3), stride=1, padding=0, bias=False) def forward(self, inputs): x = self.conv(inputs) #x = x.view(x.size()[0], x.size()[1], -1) return torch.mean(x, dim=2) # Use this an input trace to serialize the model input_shape = (3, 100, 100) model_onnx_path = "torch_model.onnx" model = Model() model.train(False) # Export the model to an ONNX file dummy_input = Variable(torch.randn(1, *input_shape)) output = torch_onnx.export(model, dummy_input, model_onnx_path, verbose=False)

이 스크립트를 실행한 이후 동일한 디렉터리에 새로 생성된 .onnx 파일이 표시됩니다. 이제 CNTK Conda 환경으로 전환하여 CNTK로 모델을 로드합니다.

다음으로 CNTK 환경을 활성화합니다.

$ source deactivate $ source activate cntk_p36

텍스트 편집기로 새 파일을 생성하고, 스크립트에서 다음 프로그램을 사용하여 CNTK에서 ONNX 형식 파일을 엽니다.

import cntk as C # Import the PyTorch model into CNTK via the CNTK import API z = C.Function.load("torch_model.onnx", device=C.device.cpu(), format=C.ModelFormat.ONNX)

이 스크립트를 실행한 이후 CNTK에 모델이 로드됩니다.

이전 스크립트에 다음을 추가한 다음 실행함으로써 CNTK를 사용하여 ONNX로 내보낼 수도 있습니다.

# Export the model to ONNX via the CNTK export API z.save("cntk_model.onnx", format=C.ModelFormat.ONNX)