Необходимо раздельно распределять данные обучения для каждого графического процессора. Параллелизм данных реализуется с использованием torch.nn.DataParallel
. Пример из документации pytorch :
import torch
import torch.nn as nn
class DataParallelModel(nn.Module):
def __init__(self):
super().__init__()
self.block1 = nn.Linear(10, 20)
# wrap block2 in DataParallel
self.block2 = nn.Linear(20, 20)
self.block2 = nn.DataParallel(self.block2)
self.block3 = nn.Linear(20, 20)
def forward(self, x):
x = self.block1(x)
x = self.block2(x)
x = self.block3(x)
return x
Я использую отдельный API для изменения размера изображений перед отправкой их в конечную точку. Вот фрагмент кода, у вас не должно возникнуть проблем с его адаптацией.
h = body['height']
w = body['width']
image = base64.b64decode(body['data'])
L = len(image)
image = np.fromstring(image, np.uint8)
image = cv2.imdecode(image, cv2.IMREAD_COLOR)
(H, W, _) = image.shape
image = cv2.resize(image, (h, w,))
image = cv2.imencode('.jpeg', image)
data = base64.b64encode(image[1].tostring())
Полный пост здесь: https://medium.com/@julsimon/using-chalice-to-serve-sagemaker-predictions-a2015c02b033