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 < 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