Spaces:
Sleeping
Sleeping
| apiVersion: diengine.opendilab.org/v1alpha1 | |
| kind: DIJob | |
| metadata: | |
| name: qbert-dqn | |
| spec: | |
| group: xxx | |
| priorityClassName: "" | |
| cleanPodPolicy: "Running" | |
| volumes: | |
| - name: cache-volume | |
| emptyDir: | |
| medium: Memory | |
| sizeLimit: 128Mi | |
| - name: work-dir | |
| hostPath: | |
| path: /data/nfs/ding/qbert | |
| coordinator: | |
| template: | |
| spec: | |
| containers: | |
| - name: coordinator | |
| image: diorchestrator/ding:v0.1.0-df39b81c | |
| imagePullPolicy: Always | |
| env: | |
| - name: PYTHONUNBUFFERED | |
| value: "1" | |
| resources: | |
| requests: | |
| cpu: 3 | |
| memory: "10Gi" | |
| limits: | |
| cpu: 3 | |
| memory: "10Gi" | |
| command: ["/bin/bash", "-c",] | |
| args: | |
| - | | |
| cat <<EOF > qbert_dqn_config_k8s.py | |
| from easydict import EasyDict | |
| qbert_dqn_config = dict( | |
| env=dict( | |
| collector_env_num=16, | |
| collector_episode_num=2, | |
| evaluator_env_num=8, | |
| evaluator_episode_num=1, | |
| stop_value=30000, | |
| env_id='QbertNoFrameskip-v4', | |
| frame_stack=4, | |
| manager=dict( | |
| shared_memory=False, | |
| ), | |
| ), | |
| policy=dict( | |
| cuda=False, | |
| priority=True, | |
| model=dict( | |
| obs_shape=[4, 84, 84], | |
| action_shape=6, | |
| encoder_hidden_size_list=[128, 128, 512], | |
| ), | |
| nstep=3, | |
| discount_factor=0.99, | |
| learn=dict( | |
| batch_size=32, | |
| learning_rate=0.0001, | |
| learner=dict( | |
| learner_num=1, | |
| send_policy_freq=1, | |
| ), | |
| ), | |
| collect=dict( | |
| n_sample=16, | |
| collector=dict( | |
| collector_num=2, | |
| update_policy_second=3, | |
| ), | |
| ), | |
| eval=dict(evaluator=dict(eval_freq=500, )), | |
| other=dict( | |
| eps=dict( | |
| type='exp', | |
| start=1., | |
| end=0.05, | |
| decay=250000, | |
| ), | |
| replay_buffer=dict( | |
| replay_buffer_size=400000, | |
| enable_track_used_data=True, | |
| ), | |
| commander=dict( | |
| collector_task_space=0, | |
| learner_task_space=1, | |
| eval_interval=30, | |
| ), | |
| ), | |
| ), | |
| ) | |
| qbert_dqn_config = EasyDict(qbert_dqn_config) | |
| main_config = qbert_dqn_config | |
| qbert_dqn_create_config = dict( | |
| env=dict( | |
| type='atari', | |
| import_names=['dizoo.atari.envs.atari_env'], | |
| ), | |
| env_manager=dict(type='subprocess'), | |
| policy=dict(type='dqn_command'), | |
| learner=dict(type='base', import_names=['ding.worker.learner.base_learner']), | |
| collector=dict( | |
| type='zergling', | |
| import_names=['ding.worker.collector.zergling_parallel_collector'], | |
| ), | |
| commander=dict( | |
| type='solo', | |
| import_names=['ding.worker.coordinator.solo_parallel_commander'], | |
| ), | |
| comm_learner=dict( | |
| type='flask_fs', | |
| import_names=['ding.worker.learner.comm.flask_fs_learner'], | |
| ), | |
| comm_collector=dict( | |
| type='flask_fs', | |
| import_names=['ding.worker.collector.comm.flask_fs_collector'], | |
| ), | |
| ) | |
| qbert_dqn_create_config = EasyDict(qbert_dqn_create_config) | |
| create_config = qbert_dqn_create_config | |
| qbert_dqn_system_config = dict( | |
| coordinator=dict( | |
| operator_server=dict( | |
| system_addr='ding-server.ding-system:8080', | |
| api_version='/v1alpha1', | |
| init_replicas_request=dict( | |
| collectors={ | |
| "replicas": 2, | |
| }, | |
| learners={ | |
| "gpus": "0", | |
| "replicas": 1, | |
| }, | |
| ), | |
| collector_target_num=2, | |
| learner_target_num=1, | |
| ), | |
| ), | |
| path_data='./data', | |
| path_policy='./policy', | |
| communication_mode='auto', | |
| learner_gpu_num=1, | |
| ) | |
| qbert_dqn_system_config = EasyDict(qbert_dqn_system_config) | |
| system_config = qbert_dqn_system_config | |
| EOF | |
| # if code has been changed in the mount path, we have to reinstall ding cli | |
| # pip install --no-cache-dir -e .; | |
| ding -m dist --module config -P k8s -c qbert_dqn_config_k8s.py -s 0; | |
| ding -m dist --module coordinator -c qbert_dqn_config_k8s.py.pkl -s 0 --disable-flask-log 0 -cdp $COORDINATOR_PORT | |
| ports: | |
| - name: coordinator | |
| containerPort: 22273 | |
| volumeMounts: | |
| - name: work-dir | |
| mountPath: /ding | |
| collector: | |
| template: | |
| spec: | |
| containers: | |
| - name: collector | |
| image: diorchestrator/ding:v0.1.0-df39b81c | |
| imagePullPolicy: Always | |
| env: | |
| - name: PYTHONUNBUFFERED | |
| value: "1" | |
| resources: | |
| requests: | |
| cpu: 6 | |
| memory: "10Gi" | |
| limits: | |
| cpu: 6 | |
| memory: "10Gi" | |
| command: ["/bin/bash", "-c",] | |
| args: | |
| - | | |
| # if code has been changed in the mount path, we have to reinstall ding cli | |
| # pip install --no-cache-dir -e .; | |
| ding -m dist --module collector -c qbert_dqn_config_k8s.py.pkl -s 0 -clp $COLLECTOR_PORT --disable-flask-log 0 | |
| ports: | |
| - name: collector | |
| containerPort: 22270 | |
| volumeMounts: | |
| - name: work-dir | |
| mountPath: /ding | |
| learner: | |
| template: | |
| spec: | |
| containers: | |
| - name: learner | |
| image: diorchestrator/ding:v0.1.0-df39b81c | |
| imagePullPolicy: Always | |
| env: | |
| - name: PYTHONUNBUFFERED | |
| value: "1" | |
| resources: | |
| requests: | |
| cpu: 3 | |
| memory: "30Gi" | |
| limits: | |
| cpu: 3 | |
| memory: "30Gi" | |
| command: ["/bin/bash", "-c",] | |
| args: | |
| - | | |
| # if code has been changed in the mount path, we have to reinstall ding cli | |
| # pip install --no-cache-dir -e .; | |
| ding -m dist --module spawn_learner -c qbert_dqn_config_k8s.py.pkl -s 0 -lp $LEARNER_PORT --disable-flask-log 0 | |
| ports: | |
| - name: learner | |
| containerPort: 22271 | |
| volumeMounts: | |
| - name: cache-volume | |
| mountPath: /dev/shm | |
| - name: work-dir | |
| mountPath: /ding | |