Запуск простого скрипта на python в кластере лучей AWS с помощью docker

#amazon-ec2 #multiprocessing #cluster-computing #distributed-computing #ray

#amazon-ec2 #многопроцессорная обработка #кластерные вычисления #распределенные вычисления #рэй

Вопрос:

Мне невероятно сложно следовать рекомендациям rays по запуску образа docker в кластере лучей для выполнения скрипта python. Я нахожу недостаток простых рабочих примеров.

Итак, у меня есть простейший файл docker:

 FROM rayproject/ray
WORKDIR /usr/src/app
COPY . .
CMD ["step_1.py"]
ENTRYPOINT ["python3"]
 

Я использую это для создания can-образа и отправки его в docker hub. («myimage» — это всего лишь пример)

 docker build -t myimage .   
docker push myimage
 

«step_1.py » просто печатает привет каждую секунду в течение 200 секунд:

 import time
for i in range(200):
    time.sleep(1)
    print("hello")
 

Это мой config.yaml. опять очень просто:

 cluster_name: simple-1

min_workers: 0
max_workers: 2

docker:
    image: "myimage"    
    container_name: "my_simple_docker_container"
    pull_before_run: True

idle_timeout_minutes: 5

provider:
    type: aws
    region: eu-west-2
    availability_zone: eu-west-2a

file_mounts_sync_continuously: False



auth:
    ssh_user: ubuntu
    ssh_private_key: /home/user/.ssh/aws_ubuntu_test.pem
head_node:
    InstanceType: c5.2xlarge
    ImageId: ami-xxxxx826a6b31fd2c
    KeyName: aws_ubuntu_test

    BlockDeviceMappings:
      - DeviceName: /dev/sda1
        Ebs:
          VolumeSize: 200

worker_nodes:
   InstanceType: c5.2xlarge
   ImageId: ami-xxxxx826a6b31fd2c
   KeyName: aws_ubuntu_test
   InstanceMarketOptions:
        MarketType: spot

head_setup_commands:
    - pip install boto3==1.4.8

worker_setup_commands:  []

head_start_ray_commands:
    - ray stop
    - ulimit -n 65536; ray start --head --port=6379 --object-manager-port=8076 --autoscaling-config=~/ray_bootstrap_config.yaml

worker_start_ray_commands:
    - ray stop
    - ulimit -n 65536; ray start --address=$RAY_HEAD_IP:6379 --object-manager-port=8076
 

Я нажал на терминал:

 ray up simple1.yaml:  
 

и эта ошибка каждый раз:

 shared connection to x.x.xx.119 closed.
"docker cp" requires exactly 2 arguments.
See 'docker cp --help'.

Usage:  docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
        docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

Copy files/folders between a container and the local filesystem
Shared connection to x.x.xx.119 closed.
 

Простое добавление образа docker будет работать на любом другом удаленном компьютере просто отлично, только не на лучевом кластере.

Если бы кто-нибудь мог мне помочь, я был бы бесконечно благодарен, и я даже обещаю добавить учебник по medium после моих усилий.

Ответ №1:

Я думаю, что проблема может быть связана с использованием ENTRYPOINT . Ray ClusterLauncher запускает docker с помощью команды, примерно подобной:

 docker run --rm --name <NAME> -d -it --net=host <image_name> bash
 

Когда я запускал docker build -t myimage . , а затем запускал docker run --rm -it myimage bash , Docker выдавал ошибку с:

 python3: can't open file 'bash': [Errno 2] No such file or directory
 

Комментарии:

1. это сработало. Проблема, с которой я сталкиваюсь сейчас, заключается в том, что я не вижу выходных данных контейнера docker. вы знаете, где я могу это найти?