|
apiVersion: diengine.opendilab.org/v1alpha1 |
|
kind: DIJob |
|
metadata: |
|
name: cartpole-dqn |
|
labels: |
|
run-dijob-type: test |
|
spec: |
|
group: xxx |
|
priorityClassName: "" |
|
cleanPodPolicy: "Running" |
|
volumes: |
|
- name: cache-volume |
|
emptyDir: |
|
medium: Memory |
|
sizeLimit: 128Mi |
|
- name: work-dir |
|
hostPath: |
|
path: /data/di-engine |
|
coordinator: |
|
template: |
|
spec: |
|
containers: |
|
- name: di-container |
|
image: diorchestrator/ding:v0.1.1 |
|
imagePullPolicy: IfNotPresent |
|
env: |
|
- name: PYTHONUNBUFFERED |
|
value: "1" |
|
command: ["/bin/bash", "-c",] |
|
args: |
|
- | |
|
cat <<EOF > cartpole_dqn_config_k8s.py |
|
from easydict import EasyDict |
|
|
|
cartpole_dqn_config = dict( |
|
exp_name='cartpole_dqn', |
|
env=dict( |
|
collector_env_num=8, |
|
collector_episode_num=2, |
|
evaluator_env_num=5, |
|
evaluator_episode_num=1, |
|
stop_value=195, |
|
), |
|
policy=dict( |
|
cuda=False, |
|
model=dict( |
|
obs_shape=4, |
|
action_shape=2, |
|
encoder_hidden_size_list=[128, 128, 64], |
|
dueling=True, |
|
), |
|
nstep=3, |
|
discount_factor=0.97, |
|
learn=dict( |
|
batch_size=32, |
|
learning_rate=0.001, |
|
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=50, )), |
|
other=dict( |
|
eps=dict( |
|
type='exp', |
|
start=0.95, |
|
end=0.1, |
|
decay=100000, |
|
), |
|
replay_buffer=dict( |
|
replay_buffer_size=100000, |
|
enable_track_used_data=False, |
|
), |
|
commander=dict( |
|
collector_task_space=2, |
|
learner_task_space=1, |
|
eval_interval=5, |
|
), |
|
), |
|
), |
|
) |
|
cartpole_dqn_config = EasyDict(cartpole_dqn_config) |
|
main_config = cartpole_dqn_config |
|
|
|
cartpole_dqn_create_config = dict( |
|
env=dict( |
|
type='cartpole', |
|
import_names=['dizoo.classic_control.cartpole.envs.cartpole_env'], |
|
), |
|
env_manager=dict(type='base'), |
|
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'], |
|
), |
|
) |
|
cartpole_dqn_create_config = EasyDict(cartpole_dqn_create_config) |
|
create_config = cartpole_dqn_create_config |
|
|
|
cartpole_dqn_system_config = dict( |
|
coordinator=dict( |
|
operator_server=dict( |
|
system_addr='di-server.di-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'.format(main_config.exp_name), |
|
path_policy='./{}/policy'.format(main_config.exp_name), |
|
communication_mode='auto', |
|
learner_gpu_num=1, |
|
) |
|
cartpole_dqn_system_config = EasyDict(cartpole_dqn_system_config) |
|
system_config = cartpole_dqn_system_config |
|
|
|
if __name__ == '__main__': |
|
from ding.entry.parallel_entry import parallel_pipeline |
|
parallel_pipeline([main_config, create_config, system_config], seed=9) |
|
EOF |
|
|
|
ding -m dist --module config -P k8s -c ./cartpole_dqn_config_k8s.py -s 0; |
|
ding -m dist --module coordinator -c /ding/cartpole_dqn_config_k8s.py.pkl -s 0 -cdp $COORDINATOR_PORT |
|
ports: |
|
- name: di-port |
|
containerPort: 22270 |
|
volumeMounts: |
|
- name: work-dir |
|
mountPath: /ding |
|
collector: |
|
template: |
|
spec: |
|
containers: |
|
- name: di-container |
|
image: diorchestrator/ding:v0.1.1 |
|
imagePullPolicy: IfNotPresent |
|
env: |
|
- name: PYTHONUNBUFFERED |
|
value: "1" |
|
command: ["/bin/bash", "-c",] |
|
args: |
|
- | |
|
ding -m dist --module collector -c /ding/cartpole_dqn_config_k8s.py.pkl -s 0 -clp $COLLECTOR_PORT |
|
ports: |
|
- name: di-port |
|
containerPort: 22270 |
|
volumeMounts: |
|
- name: work-dir |
|
mountPath: /ding |
|
learner: |
|
template: |
|
spec: |
|
containers: |
|
- name: di-container |
|
image: diorchestrator/ding:v0.1.1 |
|
imagePullPolicy: IfNotPresent |
|
env: |
|
- name: PYTHONUNBUFFERED |
|
value: "1" |
|
command: ["/bin/bash", "-c",] |
|
args: |
|
- | |
|
ding -m dist --module spawn_learner -c /ding/cartpole_dqn_config_k8s.py.pkl -s 0 -lp $LEARNER_PORT |
|
ports: |
|
- name: di-port |
|
containerPort: 22270 |
|
volumeMounts: |
|
- name: cache-volume |
|
mountPath: /dev/shm |
|
- name: work-dir |
|
mountPath: /ding |