Я использую AWS Batch для запуска сценария python с несколькими параллельными модулями (в контейнере docker при AWS ECR). Когда я вручную запускаю сценарий на Linux 16-ядерном компьютере, я вижу 16 python процессов, выполняющих код параллельно.
В надежде ускорить выполнение, я хотел использовать AWS Пакетный запуск того же скрипта путем автоматического масштабирования до 64 ядер. Но этот метод только ускоряет один python процесс - который явно медленнее, чем мой первоначальный подход.
Прочие сведения. Используемый мной параллельный метод python: pairwise_distances (построен на библиотеке joblib ) Я создал образ docker на Windows 10 машина подтолкнула его к ECR и запустила его, используя AWS Batch.
Я что-то упустил, чтобы вызвать параллельный бэкэнд Python, или есть какие-либо настройки конфигурации docker, которые я не настраивал. Заранее большое спасибо за помощь.
Пример Python Код: script.py
import pandas as pd
import numpy as np
from sklearn.metrics.pairwise import pairwise_distances
X = pd.DataFrame(np.random.randint(0,100,size=(1000, 4)), columns=list('ABCD'))
Y = pd.DataFrame(np.random.randint(0,100,size=(10000, 4)), columns=list('ABCD'))
output = pd.DataFrame(
pairwise_distances(X.to_numpy(),Y.to_numpy(), metric= lambda u, v: round((np.sum( np.minimum(u,v), axis = 0)/np.sum(u,axis= 0))*100,2) , n_jobs=-1),
columns = Y.index,
index = X.index
)
pd.DataFrame.to_csv(output, 'outputData.csv', sep=',', na_rep='', index=False)
Dockerfile:
python:3.7
ADD script.py /
COPY requirements.txt /tmp/
RUN pip install -r /tmp/requirements.txt
CMD ["python", "./script.py"]
needs.txt:
pandas
numpy
sklearn
joblib