Views
No views yet
1# install huggingface_ding
2git clone https://github.com/opendilab/huggingface_ding.git
3pip3 install -e ./huggingface_ding/
4# install environment dependencies if needed
5
6sudo apt update -y && sudo apt install -y build-essential libgl1-mesa-dev libgl1-mesa-glx libglew-dev libosmesa6-dev libglfw3 libglfw3-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev patchelf
7
8mkdir -p ~/.mujoco
9wget https://mujoco.org/download/mujoco210-linux-x86_64.tar.gz -O mujoco.tar.gz
10tar -xf mujoco.tar.gz -C ~/.mujoco
11echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/.mujoco/mjpro210/bin:~/.mujoco/mujoco210/bin" >> ~/.bashrc
12export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/.mujoco/mjpro210/bin:~/.mujoco/mujoco210/bin
13pip3 install "cython<3"
14pip3 install DI-engine[common_env]
151# running with trained model
2python3 -u run.py1from ding.bonus import SACAgent
2from ding.config import Config
3from easydict import EasyDict
4import torch
5
6# Pull model from files which are git cloned from huggingface
7policy_state_dict = torch.load("pytorch_model.bin", map_location=torch.device("cpu"))
8cfg = EasyDict(Config.file_to_dict("policy_config.py").cfg_dict)
9# Instantiate the agent
10agent = SACAgent(env_id="Walker2d-v3", exp_name="Walker2d-v3-SAC", cfg=cfg.exp_config, policy_state_dict=policy_state_dict)
11# Continue training
12agent.train(step=5000)
13# Render the new agent performance
14agent.deploy(enable_save_replay=True)
151# running with trained model
2python3 -u run.py1from ding.bonus import SACAgent
2from huggingface_ding import pull_model_from_hub
3
4# Pull model from Hugggingface hub
5policy_state_dict, cfg = pull_model_from_hub(repo_id="OpenDILabCommunity/Walker2d-v3-SAC")
6# Instantiate the agent
7agent = SACAgent(env_id="Walker2d-v3", exp_name="Walker2d-v3-SAC", cfg=cfg.exp_config, policy_state_dict=policy_state_dict)
8# Continue training
9agent.train(step=5000)
10# Render the new agent performance
11agent.deploy(enable_save_replay=True)
121#Training Your Own Agent
2python3 -u train.py1from ding.bonus import SACAgent
2from huggingface_ding import push_model_to_hub
3
4# Instantiate the agent
5agent = SACAgent(env_id="Walker2d-v3", exp_name="Walker2d-v3-SAC")
6# Train the agent
7return_ = agent.train(step=int(5000000))
8# Push model to huggingface hub
9push_model_to_hub(
10 agent=agent.best,
11 env_name="OpenAI/Gym/MuJoCo",
12 task_name="Walker2d-v3",
13 algo_name="SAC",
14 wandb_url=return_.wandb_url,
15 github_repo_url="https://github.com/opendilab/DI-engine",
16 github_doc_model_url="https://di-engine-docs.readthedocs.io/en/latest/12_policies/sac.html",
17 github_doc_env_url="https://di-engine-docs.readthedocs.io/en/latest/13_envs/mujoco.html",
18 installation_guide='''
19sudo apt update -y \
20 && sudo apt install -y \
21 build-essential \
22 libgl1-mesa-dev \
23 libgl1-mesa-glx \
24 libglew-dev \
25 libosmesa6-dev \
26 libglfw3 \
27 libglfw3-dev \
28 libsdl2-dev \
29 libsdl2-image-dev \
30 libglm-dev \
31 libfreetype6-dev \
32 patchelf
33
34mkdir -p ~/.mujoco
35wget https://mujoco.org/download/mujoco210-linux-x86_64.tar.gz -O mujoco.tar.gz
36tar -xf mujoco.tar.gz -C ~/.mujoco
37echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/.mujoco/mjpro210/bin:~/.mujoco/mujoco210/bin" >> ~/.bashrc
38export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/.mujoco/mjpro210/bin:~/.mujoco/mujoco210/bin
39pip3 install "cython<3"
40pip3 install DI-engine[common_env]
41''',
42 usage_file_by_git_clone="./sac/walker2d_sac_deploy.py",
43 usage_file_by_huggingface_ding="./sac/walker2d_sac_download.py",
44 train_file="./sac/walker2d_sac.py",
45 repo_id="OpenDILabCommunity/Walker2d-v3-SAC",
46 create_repo=False
47)
481exp_config = {
2 'env': {
3 'manager': {
4 'episode_num': float("inf"),
5 'max_retry': 1,
6 'retry_type': 'reset',
7 'auto_reset': True,
8 'step_timeout': None,
9 'reset_timeout': None,
10 'retry_waiting_time': 0.1,
11 'cfg_type': 'BaseEnvManagerDict'
12 },
13 'stop_value': 6000,
14 'n_evaluator_episode': 8,
15 'env_id': 'Walker2d-v3',
16 'collector_env_num': 1,
17 'evaluator_env_num': 8,
18 'env_wrapper': 'mujoco_default'
19 },
20 'policy': {
21 'model': {
22 'twin_critic': True,
23 'action_space': 'reparameterization',
24 'obs_shape': 17,
25 'action_shape': 6,
26 'actor_head_hidden_size': 256,
27 'critic_head_hidden_size': 256
28 },
29 'learn': {
30 'learner': {
31 'train_iterations': 1000000000,
32 'dataloader': {
33 'num_workers': 0
34 },
35 'log_policy': True,
36 'hook': {
37 'load_ckpt_before_run': '',
38 'log_show_after_iter': 100,
39 'save_ckpt_after_iter': 10000,
40 'save_ckpt_after_run': True
41 },
42 'cfg_type': 'BaseLearnerDict'
43 },
44 'update_per_collect': 1,
45 'batch_size': 256,
46 'learning_rate_q': 0.001,
47 'learning_rate_policy': 0.001,
48 'learning_rate_alpha': 0.0003,
49 'target_theta': 0.005,
50 'discount_factor': 0.99,
51 'alpha': 0.2,
52 'auto_alpha': False,
53 'log_space': True,
54 'target_entropy': None,
55 'ignore_done': False,
56 'init_w': 0.003,
57 'reparameterization': True
58 },
59 'collect': {
60 'collector': {},
61 'n_sample': 1,
62 'unroll_len': 1,
63 'collector_logit': False
64 },
65 'eval': {
66 'evaluator': {
67 'eval_freq': 1000,
68 'render': {
69 'render_freq': -1,
70 'mode': 'train_iter'
71 },
72 'figure_path': None,
73 'cfg_type': 'InteractionSerialEvaluatorDict',
74 'stop_value': 6000,
75 'n_episode': 8
76 }
77 },
78 'other': {
79 'replay_buffer': {
80 'replay_buffer_size': 1000000
81 }
82 },
83 'on_policy': False,
84 'cuda': True,
85 'multi_gpu': False,
86 'bp_update_sync': True,
87 'traj_len_inf': False,
88 'type': 'sac',
89 'priority': False,
90 'priority_IS_weight': False,
91 'random_collect_size': 10000,
92 'transition_with_policy_data': True,
93 'multi_agent': False,
94 'cfg_type': 'SACPolicyDict',
95 'command': {}
96 },
97 'exp_name': 'Walker2d-v3-SAC',
98 'seed': 0,
99 'wandb_logger': {
100 'gradient_logger': True,
101 'video_logger': True,
102 'plot_logger': True,
103 'action_logger': True,
104 'return_logger': False
105 }
106}
107