From c9a3614e075804c95f61787c9a9166bad99ea97f Mon Sep 17 00:00:00 2001 From: simoninithomas Date: Thu, 15 Dec 2022 10:18:33 +0100 Subject: [PATCH 01/28] Add Unity MLAgents Unit (4) --- units/en/_toctree.yml | 6 +++ units/en/unit4/how-mlagents-works.mdx | 66 +++++++++++++++++++++++++++ units/en/unit4/introduction.mdx | 3 ++ 3 files changed, 75 insertions(+) create mode 100644 units/en/unit4/how-mlagents-works.mdx create mode 100644 units/en/unit4/introduction.mdx diff --git a/units/en/_toctree.yml b/units/en/_toctree.yml index 1ce98b5..3138949 100644 --- a/units/en/_toctree.yml +++ b/units/en/_toctree.yml @@ -76,3 +76,9 @@ title: Conclusion - local: unit2/additional-readings title: Additional Readings +- title: Unit 4. Introduction to ML-Agents + sections: + - local: unit4/introduction + title: Introduction + - local: unit4/how-mlagents-works + title: How ML-Agents works? diff --git a/units/en/unit4/how-mlagents-works.mdx b/units/en/unit4/how-mlagents-works.mdx new file mode 100644 index 0000000..68d357c --- /dev/null +++ b/units/en/unit4/how-mlagents-works.mdx @@ -0,0 +1,66 @@ +# How do Unity ML-Agents work? [[how-mlagents-works]] + +Before training our agent, we need to understand what is ML-Agents and how it works. + +## What is Unity ML-Agents? [[what-is-mlagents]] + +[Unity ML-Agents](https://github.com/Unity-Technologies/ml-agents) is a toolkit for the game engine Unity that **allows us to create environments using Unity or use pre-made environments to train our agents**. + +It’s developed by [Unity Technologies](https://unity.com/), the developers of Unity, one of the most famous Game Engines used by the creators of Firewatch, Cuphead, and Cities: Skylines. + +
+Firewatch +
Firewatch was made with Unity
+
+ +## The four components [[four-components]] + +With Unity ML-Agents, you have four essential components: + +
+MLAgents +
Source: Unity ML-Agents Documentation
+
+ +- The first is the *Learning Environment*, which contains **the Unity scene (the environment) and the environment elements** (game characters). +- The second is the *Python API* which contains **the low-level Python interface for interacting and manipulating the environment**. It’s the API we use to launch the training. +- Then, we have the *Communicator* that **connects the environment (C#) with the Python API (Python)**. +- Finally, we have the *Python trainers**: the **Reinforcement algorithms made with PyTorch (PPO, SAC…)**. + +## Inside the Learning Component [[inside-learning-component]] + +Inside the Learning Component, we have **three important elements**: + +- The first is the *agent*, the actor of the scene. We’ll **train the agent by optimizing his policy** (which will tell us what action to take in each state). The policy is called *Brain*. +- Finally, there is the *Academy*. This element **orchestrates agents and their decision-making process**. Think of this Academy as a maestro that handles the requests from the python API. + +To better understand its role, let’s remember the RL process. This can be modeled as a loop that works like this: + +
+The RL process +
The RL Process: a loop of state, action, reward and next state
+
Source: Reinforcement Learning: An Introduction, Richard Sutton and Andrew G. Barto
+
+ +Now, let’s imagine an agent learning to play a platform game. The RL process looks like this: + +The RL process + +- Our Agent receives **state \\(S_0\\)** from the **Environment** — we receive the first frame of our game (Environment). +- Based on that **state \\(S_0\\),** the Agent takes **action \\(A_0\\)** — our Agent will move to the right. +- Environment goes to a **new** **state \\(S_1\\)** — new frame. +- The environment gives some **reward \\(R_1\\)** to the Agent — we’re not dead *(Positive Reward +1)*. + +This RL loop outputs a sequence of **state, action, reward and next state.** The goal of the agent is to **maximize the expected cumulative reward**. + +The Academy will be the one that will **send the order to our Agents and ensure that agents are in sync**: + +- Collect Observations +- Select your action using your policy +- Take the Action +- Reset if you reached the max step or if you’re done. + +The MLAgents Academy + + +Now that we understand how ML-Agents works, **we’re ready to train our agent** TODO add a phrase about our agent (snowball target) diff --git a/units/en/unit4/introduction.mdx b/units/en/unit4/introduction.mdx new file mode 100644 index 0000000..7fd9354 --- /dev/null +++ b/units/en/unit4/introduction.mdx @@ -0,0 +1,3 @@ +# An Introduction to Unity ML-Agents [[introduction-to-ml-agents]] + +Environment: Snowball target From 14580c6b7870b6ea49dd625ceaf4c112063db805 Mon Sep 17 00:00:00 2001 From: Thomas Simonini Date: Sun, 1 Jan 2023 13:27:21 +0100 Subject: [PATCH 02/28] Apply suggestions from code review Co-authored-by: Omar Sanseviero --- units/en/unit4/how-mlagents-works.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/units/en/unit4/how-mlagents-works.mdx b/units/en/unit4/how-mlagents-works.mdx index 68d357c..0ec8ebd 100644 --- a/units/en/unit4/how-mlagents-works.mdx +++ b/units/en/unit4/how-mlagents-works.mdx @@ -25,14 +25,14 @@ With Unity ML-Agents, you have four essential components: - The first is the *Learning Environment*, which contains **the Unity scene (the environment) and the environment elements** (game characters). - The second is the *Python API* which contains **the low-level Python interface for interacting and manipulating the environment**. It’s the API we use to launch the training. - Then, we have the *Communicator* that **connects the environment (C#) with the Python API (Python)**. -- Finally, we have the *Python trainers**: the **Reinforcement algorithms made with PyTorch (PPO, SAC…)**. +- Finally, we have the *Python trainers*: the **Reinforcement algorithms made with PyTorch (PPO, SAC…)**. ## Inside the Learning Component [[inside-learning-component]] Inside the Learning Component, we have **three important elements**: -- The first is the *agent*, the actor of the scene. We’ll **train the agent by optimizing his policy** (which will tell us what action to take in each state). The policy is called *Brain*. -- Finally, there is the *Academy*. This element **orchestrates agents and their decision-making process**. Think of this Academy as a maestro that handles the requests from the python API. +- The first is the *agent*, the actor of the scene. We’ll **train the agent by optimizing its policy** (which will tell us what action to take in each state). The policy is called *Brain*. +- Finally, there is the *Academy*. This component **orchestrates agents and their decision-making processes**. Think of this Academy as a teacher that handles the requests from the Python API. To better understand its role, let’s remember the RL process. This can be modeled as a loop that works like this: From 5e4f2e0024804fe3702179a5596ce8e49acdc433 Mon Sep 17 00:00:00 2001 From: simoninithomas Date: Sun, 1 Jan 2023 15:42:22 +0100 Subject: [PATCH 03/28] Update MLAgents draft --- units/en/_toctree.yml | 18 +++++-- units/en/unit4/introduction.mdx | 3 -- units/en/unit5/bonus.mdx | 19 +++++++ units/en/unit5/conclusion.mdx | 20 ++++++++ units/en/unit5/curiosity.mdx | 50 +++++++++++++++++++ units/en/unit5/hands-on.mdx | 1 + .../{unit4 => unit5}/how-mlagents-works.mdx | 14 +++--- units/en/unit5/introduction.mdx | 26 ++++++++++ units/en/unit5/pyramids.mdx | 32 ++++++++++++ units/en/unit5/shoot-target-env.mdx | 29 +++++++++++ 10 files changed, 200 insertions(+), 12 deletions(-) delete mode 100644 units/en/unit4/introduction.mdx create mode 100644 units/en/unit5/bonus.mdx create mode 100644 units/en/unit5/conclusion.mdx create mode 100644 units/en/unit5/curiosity.mdx create mode 100644 units/en/unit5/hands-on.mdx rename units/en/{unit4 => unit5}/how-mlagents-works.mdx (80%) create mode 100644 units/en/unit5/introduction.mdx create mode 100644 units/en/unit5/pyramids.mdx create mode 100644 units/en/unit5/shoot-target-env.mdx diff --git a/units/en/_toctree.yml b/units/en/_toctree.yml index 3138949..65b8873 100644 --- a/units/en/_toctree.yml +++ b/units/en/_toctree.yml @@ -76,9 +76,21 @@ title: Conclusion - local: unit2/additional-readings title: Additional Readings -- title: Unit 4. Introduction to ML-Agents +- title: Unit 5. Introduction to ML-Agents sections: - - local: unit4/introduction + - local: unit5/introduction title: Introduction - - local: unit4/how-mlagents-works + - local: unit5/how-mlagents-works title: How ML-Agents works? + - local: unit5/shoot-target-env + title: The Shoot Target environment + - local: unit5/pyramids + title: The Pyramids environment + - local: unit5/curiosity + title: (Optional) What is curiosity in Deep Reinforcement Learning? + - local: unit5/hands-on + title: Hands-on + - local: unit5/conclusion + title: Conclusion + - local: unit5/bonus + title: Bonus. Learn to create your own environments with Unity and MLAgents diff --git a/units/en/unit4/introduction.mdx b/units/en/unit4/introduction.mdx deleted file mode 100644 index 7fd9354..0000000 --- a/units/en/unit4/introduction.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# An Introduction to Unity ML-Agents [[introduction-to-ml-agents]] - -Environment: Snowball target diff --git a/units/en/unit5/bonus.mdx b/units/en/unit5/bonus.mdx new file mode 100644 index 0000000..81301fd --- /dev/null +++ b/units/en/unit5/bonus.mdx @@ -0,0 +1,19 @@ +# Bonus: Learn to create your own environments with Unity and MLAgents + +**You can create your own reinforcement learning environments with Unity and MLAgents**. But, using a game engine such as Unity, can be intimidating at first but here are the steps you can do to learn smoothly. + +## Step 1: Know how to use Unity + +- The best way to learn Unity is to do ["Create with Code" course](https://learn.unity.com/course/create-with-code): it's a series of videos for beginners where **you will create 5 small games with Unity**. + +## Step 2: Create the simplest environment with this tutorial + +- Then, when you know how to use Unity, you can create your [first basic RL environment using this tutorial](https://github.com/Unity-Technologies/ml-agents/blob/release_20_docs/docs/Learning-Environment-Create-New.md). + +## Step 3: Iterate and create nice environments + +- Now that you've created a first simple environment you can iterate in more complex one using the [MLAgents documentation (especially Designing Agents and Agent part)](https://github.com/Unity-Technologies/ml-agents/blob/release_20_docs/docs/) +- In addition, you can follow this free course ["Create a hummingbird environment"](https://learn.unity.com/course/ml-agents-hummingbirds) by [Adam Kelly](https://twitter.com/aktwelve) + + +Have fun! And if you create custom environments don't hesitate to share them to `#rl-i-made-this` discord channel. diff --git a/units/en/unit5/conclusion.mdx b/units/en/unit5/conclusion.mdx new file mode 100644 index 0000000..4083bb1 --- /dev/null +++ b/units/en/unit5/conclusion.mdx @@ -0,0 +1,20 @@ +# Conclusion + +Congrats on finishing this unit! You’ve just trained your first ML-Agents and shared it to the Hub 🥳. + +The best way to learn is to **practice and try stuff**. Why not try another environment? [ML-Agents has 18 different environments](https://github.com/Unity-Technologies/ml-agents/blob/develop/docs/Learning-Environment-Examples.md). + +For instance: +- *Worm*, where you teach a worm to crawl. +- *Walker*: teach an agent to walk towards a goal. + +Example envs + + +In the next unit, we're going to learn about multi-agents. And you're going to train your first multi-agents to compete in Soccer and Snowball fights against other classmate's agents. + +TODO add image + +Finally, we would love **to hear what you think of the course and how we can improve it**. If you have some feedback then, please 👉 [fill this form](https://forms.gle/BzKXWzLAGZESGNaE9) + +### Keep Learning, stay awesome 🤗 diff --git a/units/en/unit5/curiosity.mdx b/units/en/unit5/curiosity.mdx new file mode 100644 index 0000000..86358ce --- /dev/null +++ b/units/en/unit5/curiosity.mdx @@ -0,0 +1,50 @@ +# (Optional) What is curiosity in Deep Reinforcement Learning? + +This is an (optional) introduction about curiosity. If you want to learn more you can read my two articles where I dive into the mathematical details: + +- [Curiosity-Driven Learning through Next State Prediction](https://medium.com/data-from-the-trenches/curiosity-driven-learning-through-next-state-prediction-f7f4e2f592fa) +- [Random Network Distillation: a new take on Curiosity-Driven Learning](https://medium.com/data-from-the-trenches/curiosity-driven-learning-through-random-network-distillation-488ffd8e5938) + +## Two Major Problems in Modern RL + +To understand what is curiosity, we need first to understand the two major problems with RL: + +First, the *sparse rewards problem:* that is, **most rewards do not contain information, and hence are set to zero**. + +Remember that RL is based on the *reward hypothesis*, which is the idea that each goal can be described as the maximization of the rewards. Therefore, rewards act as feedback for RL agents, **if they don’t receive any, their knowledge of which action is appropriate (or not) cannot change**. + + +
+Curiosity +
Source: Thanks to the reward, our agent knows that this action at that state was good
+
+ + +For instance, in [Vizdoom](https://vizdoom.cs.put.edu.pl/), a set of environments based on the game Doom “DoomMyWayHome,” your agent is only rewarded **if it finds the vest**. +However, the vest is far away from your starting point, so most of your rewards will be zero. Therefore, if our agent does not receive useful feedback (dense rewards), it will take much longer to learn an optimal policy and **it can spend time turning around without finding the goal**. + +Curiosity + +The second big problem is that **the extrinsic reward function is handmade, that is in each environment, a human has to implement a reward function**. But how we can scale that in big and complex environments? + +## So what is curiosity? + +A solution to these problems is **to develop a reward function that is intrinsic to the agent, i.e., generated by the agent itself**. The agent will act as a self-learner since it will be the student, but also its own feedback master. + +**This intrinsic reward mechanism is known as curiosity** because this reward push to explore states that are novel/unfamiliar. In order to achieve that, our agent will receive a high reward when exploring new trajectories. + +This reward is in fact designed on how human acts, **we have naturally an intrinsic desire to explore environments and discover new things**. + +There are different ways to calculate this intrinsic reward, the classical one (curiosity through next-state prediction) was to calculate curiosity **as the error of our agent of predicting the next state, given the current state and action taken**. + +Curiosity + +Because the idea of curiosity is to **encourage our agent to perform actions that reduce the uncertainty in the agent’s ability to predict the consequences of its own actions** (uncertainty will be higher in areas where the agent has spent less time, or in areas with complex dynamics). + +If the agent spend a lot of times on these states, it will be good to predict the next state (low curiosity), on the other hand, if it’s a new state unexplored, it will be bad to predict the next state (high curiosity). + +Curiosity + +Using curiosity will push our agent to favor transitions with high prediction error (which will be higher in areas where the agent has spent less time, or in areas with complex dynamics) and **consequently better explore our environment**. + +There’s also **other curiosity calculation methods**. ML-Agents uses a more advanced one called Curiosity through random network distillation. This is out of the scope of the tutorial but if you’re interested [I wrote an article explaining it in detail](https://medium.com/data-from-the-trenches/curiosity-driven-learning-through-random-network-distillation-488ffd8e5938). diff --git a/units/en/unit5/hands-on.mdx b/units/en/unit5/hands-on.mdx new file mode 100644 index 0000000..3654eda --- /dev/null +++ b/units/en/unit5/hands-on.mdx @@ -0,0 +1 @@ +# Hands-on diff --git a/units/en/unit4/how-mlagents-works.mdx b/units/en/unit5/how-mlagents-works.mdx similarity index 80% rename from units/en/unit4/how-mlagents-works.mdx rename to units/en/unit5/how-mlagents-works.mdx index 0ec8ebd..76f074f 100644 --- a/units/en/unit4/how-mlagents-works.mdx +++ b/units/en/unit5/how-mlagents-works.mdx @@ -13,9 +13,9 @@ It’s developed by [Unity Technologies](https://unity.com/), the developers of
Firewatch was made with Unity
-## The four components [[four-components]] +## The six components [[six-components]] -With Unity ML-Agents, you have four essential components: +With Unity ML-Agents, you have six essential components:
MLAgents @@ -23,15 +23,17 @@ With Unity ML-Agents, you have four essential components:
- The first is the *Learning Environment*, which contains **the Unity scene (the environment) and the environment elements** (game characters). -- The second is the *Python API* which contains **the low-level Python interface for interacting and manipulating the environment**. It’s the API we use to launch the training. -- Then, we have the *Communicator* that **connects the environment (C#) with the Python API (Python)**. -- Finally, we have the *Python trainers*: the **Reinforcement algorithms made with PyTorch (PPO, SAC…)**. +- The second is the *Python Low-level API* which contains **the low-level Python interface for interacting and manipulating the environment**. It’s the API we use to launch the training. +- Then, we have the *External Communicator* that **connects the Learning Environment (made with C#) with the low level Python API (Python)**. +- The *Python trainers*: the **Reinforcement algorithms made with PyTorch (PPO, SAC…)**. +- The *Gym wrapper*: to encapsulate RL environment in a gym wrapper. +- The *PettingZoo wrapper*: PettingZoo is the multi-agents of gym wrapper. ## Inside the Learning Component [[inside-learning-component]] Inside the Learning Component, we have **three important elements**: -- The first is the *agent*, the actor of the scene. We’ll **train the agent by optimizing its policy** (which will tell us what action to take in each state). The policy is called *Brain*. +- The first is the *agent component*, the actor of the scene. We’ll **train the agent by optimizing its policy** (which will tell us what action to take in each state). The policy is called *Brain*. - Finally, there is the *Academy*. This component **orchestrates agents and their decision-making processes**. Think of this Academy as a teacher that handles the requests from the Python API. To better understand its role, let’s remember the RL process. This can be modeled as a loop that works like this: diff --git a/units/en/unit5/introduction.mdx b/units/en/unit5/introduction.mdx new file mode 100644 index 0000000..228962d --- /dev/null +++ b/units/en/unit5/introduction.mdx @@ -0,0 +1,26 @@ +# An Introduction to Unity ML-Agents [[introduction-to-ml-agents]] + +One of the critical element in Reinforcement Learning is **to be able to create environments**. An interesting tool to use for that is game engines such as Godot, Unity or Unreal Engine. + +One of them, [Unity](https://unity.com/), created the [Unity ML-Agents Toolkit](https://github.com/Unity-Technologies/ml-agents) , a plugin based on the game engine Unity that allows us **to use the Unity Game Engine as an environment builder to train agents**. + +
+MLAgents environments +
Source: ML-Agents documentation
+
+ +From playing football (soccer), learning to walk and jumping big walls, Unity ML-Agents Toolkit provides a ton of exceptional pre-made environments. + +In this Unit, we're going to learn to use ML-Agents, but **don't worry if you don't know how to use the Unity Game Engine**, you'll don't need to use. + +And so, today, we're going to train two agents: +- The first one will learn to **shoot snowballs onto spawning target**. +- The second needs to **press a button to spawn a pyramid, then navigate to the pyramid, knock it over, and move to the gold brick at the top**. To do that, it will need to explore its environment, and we will use a technique called curiosity. + +TODO: Add illustration environments + +Then, after training we’ll push the trained agents to the Hugging Face Hub and you’ll be able to visualize it playing directly on your browser without having to use the Unity Editor. You’ll be also be able to visualize and download others trained agents from the community. + +Doing this Unit will prepare you for the next challenge where you will train agent in multi-agents environments and compete against your classmates' agents. + +Sounds exciting? Let's get started, diff --git a/units/en/unit5/pyramids.mdx b/units/en/unit5/pyramids.mdx new file mode 100644 index 0000000..0df9ed8 --- /dev/null +++ b/units/en/unit5/pyramids.mdx @@ -0,0 +1,32 @@ +# The Pyramid environment + +The goal in this environment is to train our agent to **get the gold brick on the top of the Pyramid. In order to do that, it needs to press a button to spawn a pyramid, navigate to the Pyramid, knock it over, and move to the gold brick at the top**. + +Pyramids Environment + + +## The reward function + +The reward function is: + +Pyramids Environment + + +To train this new agent that seeks that button and then the Pyramid to destroy, we’ll use a combination of two types of rewards: + +- The *extrinsic one* given by the environment (illustration above). +- But also an *intrinsic* one called **curiosity**. This second will **push our agent to be curious, or in other terms, to better explore its environment**. + +If you want to know more about curiosity, the next section (optional) will explain the basics. + +## The observation space + +In terms of observation, we **use 148 raycasts that can each detect objects** (switch, bricks, golden brick, and walls.) + +We also use a **boolean variable indicating the switch state** (did we turn on or not the switch to spawn the Pyramid) and a vector that **contains agent’ speed**. + +## The action space + +The action space is **discrete** with four possible actions: + +Pyramids Environment diff --git a/units/en/unit5/shoot-target-env.mdx b/units/en/unit5/shoot-target-env.mdx new file mode 100644 index 0000000..00fcd72 --- /dev/null +++ b/units/en/unit5/shoot-target-env.mdx @@ -0,0 +1,29 @@ +# The Shoot Target Environment + +## The Agent's Goal +The first agent you're going to train is Julien the bear (the name is based after our [CTO Julien Chaumond](https://twitter.com/julien_c)) to shoot targets with snowballs. + +The goal in this environment is that Julien the bear shoot the maximum of targets that spawned, in the limited time. To do that, he will need to move correctly towards the target and shoot. +Given he needs to wait 2 second after launching a snowball, he needs to learn to shoot correctly. + +TODO ADD GIF + +## The reward function + +TODO ADD IMAGE REWARD + +## The observation space + +In terms of observations, we don’t use normal vision (frame), but we use TOOD ADD raycasts that can each detect objects (target, walls) + +Think of raycasts as lasers that will detect if it passes through an object. + +
+Raycasts +
Source: ML-Agents documentation
+
+ +## The action space + +The action space is discrete with TODO ADD +IMAGE From 8baa4e45b68eec1c6aea966c8307330ab834335a Mon Sep 17 00:00:00 2001 From: simoninithomas Date: Fri, 6 Jan 2023 14:06:34 +0100 Subject: [PATCH 04/28] Update MLAgents introduction --- units/en/_toctree.yml | 4 ++-- units/en/unit5/how-mlagents-works.mdx | 2 +- units/en/unit5/introduction.mdx | 16 ++++++++-------- ...{shoot-target-env.mdx => snowball-target.mdx} | 10 ++++------ 4 files changed, 15 insertions(+), 17 deletions(-) rename units/en/unit5/{shoot-target-env.mdx => snowball-target.mdx} (61%) diff --git a/units/en/_toctree.yml b/units/en/_toctree.yml index 99ebffd..3d6a696 100644 --- a/units/en/_toctree.yml +++ b/units/en/_toctree.yml @@ -136,8 +136,8 @@ title: Introduction - local: unit5/how-mlagents-works title: How ML-Agents works? - - local: unit5/shoot-target-env - title: The Shoot Target environment + - local: unit5/snowball-target + title: The SnowballTarget environment - local: unit5/pyramids title: The Pyramids environment - local: unit5/curiosity diff --git a/units/en/unit5/how-mlagents-works.mdx b/units/en/unit5/how-mlagents-works.mdx index 76f074f..55c29f9 100644 --- a/units/en/unit5/how-mlagents-works.mdx +++ b/units/en/unit5/how-mlagents-works.mdx @@ -65,4 +65,4 @@ The Academy will be the one that will **send the order to our Agents and ensure The MLAgents Academy -Now that we understand how ML-Agents works, **we’re ready to train our agent** TODO add a phrase about our agent (snowball target) +Now that we understand how ML-Agents works, **we’re ready to train our agents.** diff --git a/units/en/unit5/introduction.mdx b/units/en/unit5/introduction.mdx index 228962d..bcf9741 100644 --- a/units/en/unit5/introduction.mdx +++ b/units/en/unit5/introduction.mdx @@ -1,26 +1,26 @@ # An Introduction to Unity ML-Agents [[introduction-to-ml-agents]] -One of the critical element in Reinforcement Learning is **to be able to create environments**. An interesting tool to use for that is game engines such as Godot, Unity or Unreal Engine. +One of the critical elements in Reinforcement Learning is **to be able to create environments**. An interesting tool to use for that is game engines such as Godot, Unity, or Unreal Engine. -One of them, [Unity](https://unity.com/), created the [Unity ML-Agents Toolkit](https://github.com/Unity-Technologies/ml-agents) , a plugin based on the game engine Unity that allows us **to use the Unity Game Engine as an environment builder to train agents**. +One of them, [Unity](https://unity.com/), created the [Unity ML-Agents Toolkit](https://github.com/Unity-Technologies/ml-agents), a plugin based on the game engine Unity that allows us **to use the Unity Game Engine as an environment builder to train agents**.
MLAgents environments -
Source: ML-Agents documentation
+
Source: ML-Agents documentation
-From playing football (soccer), learning to walk and jumping big walls, Unity ML-Agents Toolkit provides a ton of exceptional pre-made environments. +Unity ML-Agents Toolkit provides a ton of exceptional pre-made environments, from playing football (soccer), learning to walk, and jumping big walls. -In this Unit, we're going to learn to use ML-Agents, but **don't worry if you don't know how to use the Unity Game Engine**, you'll don't need to use. +In this Unit, we'll learn to use ML-Agents, but **don't worry if you don't know how to use the Unity Game Engine**, you'll don't need to use it to train your agents. And so, today, we're going to train two agents: - The first one will learn to **shoot snowballs onto spawning target**. -- The second needs to **press a button to spawn a pyramid, then navigate to the pyramid, knock it over, and move to the gold brick at the top**. To do that, it will need to explore its environment, and we will use a technique called curiosity. +- The second need to **press a button to spawn a pyramid, then navigate to the pyramid, knock it over, and move to the gold brick at the top**. To do that, it will need to explore its environment, and we will use a technique called curiosity. TODO: Add illustration environments -Then, after training we’ll push the trained agents to the Hugging Face Hub and you’ll be able to visualize it playing directly on your browser without having to use the Unity Editor. You’ll be also be able to visualize and download others trained agents from the community. +Then, after training **, you'll push the trained agents to the Hugging Face Hub**, and you'll be able to **visualize it playing directly on your browser without having to use the Unity Editor**. -Doing this Unit will prepare you for the next challenge where you will train agent in multi-agents environments and compete against your classmates' agents. +Doing this Unit will **prepare you for the next challenge: AI vs. AI where you will train agents in multi-agents environments and compete against your classmates' agents**. Sounds exciting? Let's get started, diff --git a/units/en/unit5/shoot-target-env.mdx b/units/en/unit5/snowball-target.mdx similarity index 61% rename from units/en/unit5/shoot-target-env.mdx rename to units/en/unit5/snowball-target.mdx index 00fcd72..a6e07c1 100644 --- a/units/en/unit5/shoot-target-env.mdx +++ b/units/en/unit5/snowball-target.mdx @@ -1,12 +1,10 @@ -# The Shoot Target Environment +# The SnowballTarget Environment ## The Agent's Goal -The first agent you're going to train is Julien the bear (the name is based after our [CTO Julien Chaumond](https://twitter.com/julien_c)) to shoot targets with snowballs. +The first agent you're going to train is Julien the bear (the name is based after our [CTO Julien Chaumond](https://twitter.com/julien_c)) to hit targets with snowballs. -The goal in this environment is that Julien the bear shoot the maximum of targets that spawned, in the limited time. To do that, he will need to move correctly towards the target and shoot. -Given he needs to wait 2 second after launching a snowball, he needs to learn to shoot correctly. - -TODO ADD GIF +The goal in this environment is that Julien the bear **hit as much as possible targets that spawned, in the limited time** (1000 timesteps). To do that, it will need **to place itself correctly from the target and shoot +**. In addition, to avoid "snowball spamming" (aka shooting a snowall every timestep),**Julien the bear has a "cool off" system** (it needs to wait 0.5 seconds after a shoot to be able to shoot again). ## The reward function From a86695b50e7cdf7cb38921b03a59a8b1b5b26b61 Mon Sep 17 00:00:00 2001 From: simoninithomas Date: Fri, 6 Jan 2023 14:19:02 +0100 Subject: [PATCH 05/28] Update snowball target explanation --- units/en/unit5/snowball-target.mdx | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/units/en/unit5/snowball-target.mdx b/units/en/unit5/snowball-target.mdx index a6e07c1..dd8d2a7 100644 --- a/units/en/unit5/snowball-target.mdx +++ b/units/en/unit5/snowball-target.mdx @@ -1,18 +1,25 @@ # The SnowballTarget Environment ## The Agent's Goal -The first agent you're going to train is Julien the bear (the name is based after our [CTO Julien Chaumond](https://twitter.com/julien_c)) to hit targets with snowballs. +The first agent you're going to train is Julien the bear (the name is based after our [CTO Julien Chaumond](https://twitter.com/julien_c)) **to hit targets with snowballs**. -The goal in this environment is that Julien the bear **hit as much as possible targets that spawned, in the limited time** (1000 timesteps). To do that, it will need **to place itself correctly from the target and shoot -**. In addition, to avoid "snowball spamming" (aka shooting a snowall every timestep),**Julien the bear has a "cool off" system** (it needs to wait 0.5 seconds after a shoot to be able to shoot again). +The goal in this environment is that Julien the bear **hit as many targets as possible in the limited time** (1000 timesteps). To do that, it will need **to place itself correctly from the target and shoot. +**. In addition, to avoid "snowball spamming" (aka shooting a snowball every timestep),**Julien the bear has a "cool off" system** (it needs to wait 0.5 seconds after a shoot to be able to shoot again). -## The reward function +## The reward function and the reward engineering problem +The reward function is simple. The environment gives a +1 reward every time the agent hits a target. +Because the agent's goal is to maximize the expected cumulative reward, it will try to hit as many targets as possible. + +We could have a more complex reward function (with a penalty to push the agent to go faster, etc.). But when you design an environment, you need to avoid the *reward engineering problem*, which is having a too complex reward function to force your agent to behave as you want it to do. +Why? Because by doing that, you might miss interesting strategies that the agent will find with a simpler reward function. TODO ADD IMAGE REWARD ## The observation space -In terms of observations, we don’t use normal vision (frame), but we use TOOD ADD raycasts that can each detect objects (target, walls) +Regarding observations, we don't use normal vision (frame), but we use raycasts. + + TOOD ADD raycasts that can each detect objects (target, walls) Think of raycasts as lasers that will detect if it passes through an object. From 0d352e4f7a632b242440063dfee3dc92dea80199 Mon Sep 17 00:00:00 2001 From: simoninithomas Date: Fri, 6 Jan 2023 14:27:57 +0100 Subject: [PATCH 06/28] Update environments explanation --- units/en/unit5/pyramids.mdx | 4 +++- units/en/unit5/snowball-target.mdx | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/units/en/unit5/pyramids.mdx b/units/en/unit5/pyramids.mdx index 0df9ed8..28941a7 100644 --- a/units/en/unit5/pyramids.mdx +++ b/units/en/unit5/pyramids.mdx @@ -23,7 +23,9 @@ If you want to know more about curiosity, the next section (optional) will expla In terms of observation, we **use 148 raycasts that can each detect objects** (switch, bricks, golden brick, and walls.) -We also use a **boolean variable indicating the switch state** (did we turn on or not the switch to spawn the Pyramid) and a vector that **contains agent’ speed**. +We also use a **boolean variable indicating the switch state** (did we turn on or not the switch to spawn the Pyramid) and a vector that **contains the agent’s speed**. + +ADD SCREENSHOT CODE ## The action space diff --git a/units/en/unit5/snowball-target.mdx b/units/en/unit5/snowball-target.mdx index dd8d2a7..d34fd04 100644 --- a/units/en/unit5/snowball-target.mdx +++ b/units/en/unit5/snowball-target.mdx @@ -19,7 +19,7 @@ TODO ADD IMAGE REWARD Regarding observations, we don't use normal vision (frame), but we use raycasts. - TOOD ADD raycasts that can each detect objects (target, walls) + TOOD ADD raycasts that can each detect objects (target, walls) and how much we have Think of raycasts as lasers that will detect if it passes through an object. From 583462ff23b0174fc644990e3a8ad1bf6b5180a2 Mon Sep 17 00:00:00 2001 From: Thomas Simonini Date: Fri, 6 Jan 2023 17:58:22 +0100 Subject: [PATCH 07/28] Update introduction.mdx --- units/en/unit5/introduction.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/units/en/unit5/introduction.mdx b/units/en/unit5/introduction.mdx index bcf9741..fc13ec3 100644 --- a/units/en/unit5/introduction.mdx +++ b/units/en/unit5/introduction.mdx @@ -17,7 +17,7 @@ And so, today, we're going to train two agents: - The first one will learn to **shoot snowballs onto spawning target**. - The second need to **press a button to spawn a pyramid, then navigate to the pyramid, knock it over, and move to the gold brick at the top**. To do that, it will need to explore its environment, and we will use a technique called curiosity. -TODO: Add illustration environments +Environments Then, after training **, you'll push the trained agents to the Hugging Face Hub**, and you'll be able to **visualize it playing directly on your browser without having to use the Unity Editor**. From fb12b509efade4cf4d89e0ca2c4fe6702d25690a Mon Sep 17 00:00:00 2001 From: Thomas Simonini Date: Fri, 6 Jan 2023 18:01:33 +0100 Subject: [PATCH 08/28] Update snowball-target.mdx --- units/en/unit5/snowball-target.mdx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/units/en/unit5/snowball-target.mdx b/units/en/unit5/snowball-target.mdx index d34fd04..4d1e7fe 100644 --- a/units/en/unit5/snowball-target.mdx +++ b/units/en/unit5/snowball-target.mdx @@ -1,17 +1,18 @@ # The SnowballTarget Environment ## The Agent's Goal + The first agent you're going to train is Julien the bear (the name is based after our [CTO Julien Chaumond](https://twitter.com/julien_c)) **to hit targets with snowballs**. -The goal in this environment is that Julien the bear **hit as many targets as possible in the limited time** (1000 timesteps). To do that, it will need **to place itself correctly from the target and shoot. -**. In addition, to avoid "snowball spamming" (aka shooting a snowball every timestep),**Julien the bear has a "cool off" system** (it needs to wait 0.5 seconds after a shoot to be able to shoot again). +The goal in this environment is that Julien the bear **hit as many targets as possible in the limited time** (1000 timesteps). To do that, it will need **to place itself correctly from the target and shoot**. In addition, to avoid "snowball spamming" (aka shooting a snowball every timestep),**Julien the bear has a "cool off" system** (it needs to wait 0.5 seconds after a shoot to be able to shoot again). ## The reward function and the reward engineering problem -The reward function is simple. The environment gives a +1 reward every time the agent hits a target. + +The reward function is simple. **The environment gives a +1 reward every time the agent hits a target**. Because the agent's goal is to maximize the expected cumulative reward, it will try to hit as many targets as possible. We could have a more complex reward function (with a penalty to push the agent to go faster, etc.). But when you design an environment, you need to avoid the *reward engineering problem*, which is having a too complex reward function to force your agent to behave as you want it to do. -Why? Because by doing that, you might miss interesting strategies that the agent will find with a simpler reward function. +Why? Because by doing that, **you might miss interesting strategies that the agent will find with a simpler reward function**. TODO ADD IMAGE REWARD From 759bf0d113829b3ef8eaf66410df50072bde1ef7 Mon Sep 17 00:00:00 2001 From: simoninithomas Date: Sat, 7 Jan 2023 10:12:52 +0100 Subject: [PATCH 09/28] Updates MLAgents Unit --- units/en/_toctree.yml | 4 ++-- units/en/unit5/conclusion.mdx | 4 ++-- units/en/unit5/how-mlagents-works.mdx | 2 +- units/en/unit5/introduction.mdx | 5 ++++- units/en/unit5/snowball-target.mdx | 27 ++++++++++++++++++++------- 5 files changed, 29 insertions(+), 13 deletions(-) diff --git a/units/en/_toctree.yml b/units/en/_toctree.yml index 3d6a696..8d1b138 100644 --- a/units/en/_toctree.yml +++ b/units/en/_toctree.yml @@ -144,10 +144,10 @@ title: (Optional) What is curiosity in Deep Reinforcement Learning? - local: unit5/hands-on title: Hands-on - - local: unit5/conclusion - title: Conclusion - local: unit5/bonus title: Bonus. Learn to create your own environments with Unity and MLAgents + - local: unit5/conclusion + title: Conclusion - title: What's next? New Units Publishing Schedule sections: - local: communication/publishing-schedule diff --git a/units/en/unit5/conclusion.mdx b/units/en/unit5/conclusion.mdx index 4083bb1..4719c61 100644 --- a/units/en/unit5/conclusion.mdx +++ b/units/en/unit5/conclusion.mdx @@ -11,9 +11,9 @@ For instance: Example envs -In the next unit, we're going to learn about multi-agents. And you're going to train your first multi-agents to compete in Soccer and Snowball fights against other classmate's agents. +In the next unit, we're going to learn about multi-agents. And you're going to train your first multi-agents to compete in Soccer and Snowball fight against other classmate's agents. -TODO add image +Snownball fight Finally, we would love **to hear what you think of the course and how we can improve it**. If you have some feedback then, please 👉 [fill this form](https://forms.gle/BzKXWzLAGZESGNaE9) diff --git a/units/en/unit5/how-mlagents-works.mdx b/units/en/unit5/how-mlagents-works.mdx index 55c29f9..95f3b87 100644 --- a/units/en/unit5/how-mlagents-works.mdx +++ b/units/en/unit5/how-mlagents-works.mdx @@ -1,6 +1,6 @@ # How do Unity ML-Agents work? [[how-mlagents-works]] -Before training our agent, we need to understand what is ML-Agents and how it works. +Before training our agent, we need to understand **what is ML-Agents and how it works**. ## What is Unity ML-Agents? [[what-is-mlagents]] diff --git a/units/en/unit5/introduction.mdx b/units/en/unit5/introduction.mdx index fc13ec3..5746ac3 100644 --- a/units/en/unit5/introduction.mdx +++ b/units/en/unit5/introduction.mdx @@ -1,6 +1,9 @@ # An Introduction to Unity ML-Agents [[introduction-to-ml-agents]] -One of the critical elements in Reinforcement Learning is **to be able to create environments**. An interesting tool to use for that is game engines such as Godot, Unity, or Unreal Engine. +One of the challenges in Reinforcement Learning is to **create environments**. Fortunately for us, game engines are the perfect tool to use. +Game engines like [Unity](https://unity.com/), [Godot](https://godotengine.org/) or [Unreal Engine](https://www.unrealengine.com/), are programs made to create video games. They are perfectly suited +for creating environments: they provide physics systems, 2D/3D rendering, and more. + One of them, [Unity](https://unity.com/), created the [Unity ML-Agents Toolkit](https://github.com/Unity-Technologies/ml-agents), a plugin based on the game engine Unity that allows us **to use the Unity Game Engine as an environment builder to train agents**. diff --git a/units/en/unit5/snowball-target.mdx b/units/en/unit5/snowball-target.mdx index 4d1e7fe..c65511d 100644 --- a/units/en/unit5/snowball-target.mdx +++ b/units/en/unit5/snowball-target.mdx @@ -1,26 +1,30 @@ # The SnowballTarget Environment +TODO Add gif snowballtarget environment + ## The Agent's Goal The first agent you're going to train is Julien the bear (the name is based after our [CTO Julien Chaumond](https://twitter.com/julien_c)) **to hit targets with snowballs**. -The goal in this environment is that Julien the bear **hit as many targets as possible in the limited time** (1000 timesteps). To do that, it will need **to place itself correctly from the target and shoot**. In addition, to avoid "snowball spamming" (aka shooting a snowball every timestep),**Julien the bear has a "cool off" system** (it needs to wait 0.5 seconds after a shoot to be able to shoot again). +The goal in this environment is that Julien the bear **hit as many targets as possible in the limited time** (1000 timesteps). To do that, it will need **to place itself correctly from the target and shoot**. + +In addition, to avoid "snowball spamming" (aka shooting a snowball every timestep), **Julien the bear has a "cool off" system** (it needs to wait 0.5 seconds after a shoot to be able to shoot again). + +ADD GIF COOLOFF ## The reward function and the reward engineering problem -The reward function is simple. **The environment gives a +1 reward every time the agent hits a target**. -Because the agent's goal is to maximize the expected cumulative reward, it will try to hit as many targets as possible. +The reward function is simple. **The environment gives a +1 reward every time the agent's snowball hits a target**. +Because the agent's goal is to maximize the expected cumulative reward, **it will try to hit as many targets as possible**. We could have a more complex reward function (with a penalty to push the agent to go faster, etc.). But when you design an environment, you need to avoid the *reward engineering problem*, which is having a too complex reward function to force your agent to behave as you want it to do. Why? Because by doing that, **you might miss interesting strategies that the agent will find with a simpler reward function**. -TODO ADD IMAGE REWARD +Reward system ## The observation space -Regarding observations, we don't use normal vision (frame), but we use raycasts. - - TOOD ADD raycasts that can each detect objects (target, walls) and how much we have +Regarding observations, we don't use normal vision (frame), but **we use raycasts**. Think of raycasts as lasers that will detect if it passes through an object. @@ -29,6 +33,15 @@ Think of raycasts as lasers that will detect if it passes through an object.
Source: ML-Agents documentation
+ +In this environment our agent have multiple set of raycasts: +- + + + TOOD ADD raycasts that can each detect objects (target, walls) and how much we have + + + ## The action space The action space is discrete with TODO ADD From 92dc5ce8ebf47e72a08075028f7f3478b67c9724 Mon Sep 17 00:00:00 2001 From: simoninithomas Date: Sat, 7 Jan 2023 10:46:46 +0100 Subject: [PATCH 10/28] Add illustrations --- units/en/unit5/snowball-target.mdx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/units/en/unit5/snowball-target.mdx b/units/en/unit5/snowball-target.mdx index c65511d..e1061a5 100644 --- a/units/en/unit5/snowball-target.mdx +++ b/units/en/unit5/snowball-target.mdx @@ -10,7 +10,10 @@ The goal in this environment is that Julien the bear **hit as many targets as po In addition, to avoid "snowball spamming" (aka shooting a snowball every timestep), **Julien the bear has a "cool off" system** (it needs to wait 0.5 seconds after a shoot to be able to shoot again). -ADD GIF COOLOFF +
+Cool Off System +
The agent needs to wait 0.5s before being able to shoot a snowball again
+ ## The reward function and the reward engineering problem From 98f4c85709bfcca616f39da8fc51e2d372c9307f Mon Sep 17 00:00:00 2001 From: simoninithomas Date: Sat, 7 Jan 2023 10:48:28 +0100 Subject: [PATCH 11/28] Add illustrations --- units/en/unit5/pyramids.mdx | 2 ++ units/en/unit5/snowball-target.mdx | 7 ++----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/units/en/unit5/pyramids.mdx b/units/en/unit5/pyramids.mdx index 28941a7..2b6cdf9 100644 --- a/units/en/unit5/pyramids.mdx +++ b/units/en/unit5/pyramids.mdx @@ -23,6 +23,8 @@ If you want to know more about curiosity, the next section (optional) will expla In terms of observation, we **use 148 raycasts that can each detect objects** (switch, bricks, golden brick, and walls.) + + We also use a **boolean variable indicating the switch state** (did we turn on or not the switch to spawn the Pyramid) and a vector that **contains the agent’s speed**. ADD SCREENSHOT CODE diff --git a/units/en/unit5/snowball-target.mdx b/units/en/unit5/snowball-target.mdx index e1061a5..a277b5d 100644 --- a/units/en/unit5/snowball-target.mdx +++ b/units/en/unit5/snowball-target.mdx @@ -13,7 +13,7 @@ In addition, to avoid "snowball spamming" (aka shooting a snowball every timeste
Cool Off System
The agent needs to wait 0.5s before being able to shoot a snowball again
- +
## The reward function and the reward engineering problem @@ -39,10 +39,7 @@ Think of raycasts as lasers that will detect if it passes through an object. In this environment our agent have multiple set of raycasts: - - - - TOOD ADD raycasts that can each detect objects (target, walls) and how much we have - +Raycasts ## The action space From bce8ba85ed6c856d294044e96b265d012c1fcd6b Mon Sep 17 00:00:00 2001 From: simoninithomas Date: Sat, 7 Jan 2023 17:27:14 +0100 Subject: [PATCH 12/28] Update MLAgents --- units/en/unit5/conclusion.mdx | 6 ++++-- units/en/unit5/hands-on.mdx | 28 ++++++++++++++++++++++++++++ units/en/unit5/introduction.mdx | 2 +- units/en/unit5/pyramids.mdx | 4 ++-- units/en/unit5/snowball-target.mdx | 22 ++++++++++++++-------- 5 files changed, 49 insertions(+), 13 deletions(-) diff --git a/units/en/unit5/conclusion.mdx b/units/en/unit5/conclusion.mdx index 4719c61..8f173fc 100644 --- a/units/en/unit5/conclusion.mdx +++ b/units/en/unit5/conclusion.mdx @@ -5,8 +5,10 @@ Congrats on finishing this unit! You’ve just trained your first ML-Agents and The best way to learn is to **practice and try stuff**. Why not try another environment? [ML-Agents has 18 different environments](https://github.com/Unity-Technologies/ml-agents/blob/develop/docs/Learning-Environment-Examples.md). For instance: -- *Worm*, where you teach a worm to crawl. -- *Walker*: teach an agent to walk towards a goal. +- [Worm](https://huggingface.co/spaces/unity/ML-Agents-Worm), where you teach a worm to crawl. +- [Walker](https://huggingface.co/spaces/unity/ML-Agents-Walker): teach an agent to walk towards a goal. + +Check the documentation to find how to train them and the list of already integrated MLAgents environments on the Hub: https://github.com/huggingface/ml-agents#getting-started Example envs diff --git a/units/en/unit5/hands-on.mdx b/units/en/unit5/hands-on.mdx index 3654eda..258ae79 100644 --- a/units/en/unit5/hands-on.mdx +++ b/units/en/unit5/hands-on.mdx @@ -1 +1,29 @@ # Hands-on + + + + +Now that we learned what is ML-Agents, how it works and that we studied the two environments we're going to use. We're ready to train our agents. + +- The first one will learn to **shoot snowballs onto spawning target**. +- The second need to **press a button to spawn a pyramid, then navigate to the pyramid, knock it over, and move to the gold brick at the top**. To do that, it will need to explore its environment, and we will use a technique called curiosity. + +Environments + +After that, you'll be able to watch your agents playing directly on your browser. + +The ML-Agents integration on the Hub **is still experimental**, some features will be added in the future. But for now, to validate this hands-on for the certification process, you just need to push your trained models to the Hub. +There's no results to attain to validate this one. But if you want to get nice results you can try to attain: + +- For [Pyramids](https://huggingface.co/spaces/unity/ML-Agents-Pyramids): Mean Reward = 1.75 +- For [SnowballTarget](https://huggingface.co/spaces/ThomasSimonini/ML-Agents-SnowballTarget): Mean Reward ⁼ 15 or 30 targets shoot in an episode. + + For more information about the certification process, check this section 👉 https://huggingface.co/deep-rl-course/en/unit0/introduction#certification-process + + **To start the hands-on click on Open In Colab button** 👇 : + + [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/deep-rl-class/blob/master/notebooks/unit5/unit5.ipynb) diff --git a/units/en/unit5/introduction.mdx b/units/en/unit5/introduction.mdx index 5746ac3..5ef5795 100644 --- a/units/en/unit5/introduction.mdx +++ b/units/en/unit5/introduction.mdx @@ -1,6 +1,6 @@ # An Introduction to Unity ML-Agents [[introduction-to-ml-agents]] -One of the challenges in Reinforcement Learning is to **create environments**. Fortunately for us, game engines are the perfect tool to use. +One of the challenges in Reinforcement Learning is to **create environments**. Fortunately for us, we can use game engines. Game engines like [Unity](https://unity.com/), [Godot](https://godotengine.org/) or [Unreal Engine](https://www.unrealengine.com/), are programs made to create video games. They are perfectly suited for creating environments: they provide physics systems, 2D/3D rendering, and more. diff --git a/units/en/unit5/pyramids.mdx b/units/en/unit5/pyramids.mdx index 2b6cdf9..4ddf267 100644 --- a/units/en/unit5/pyramids.mdx +++ b/units/en/unit5/pyramids.mdx @@ -11,7 +11,6 @@ The reward function is: Pyramids Environment - To train this new agent that seeks that button and then the Pyramid to destroy, we’ll use a combination of two types of rewards: - The *extrinsic one* given by the environment (illustration above). @@ -27,7 +26,8 @@ In terms of observation, we **use 148 raycasts that can each detect objects** (s We also use a **boolean variable indicating the switch state** (did we turn on or not the switch to spawn the Pyramid) and a vector that **contains the agent’s speed**. -ADD SCREENSHOT CODE +Pyramids obs code + ## The action space diff --git a/units/en/unit5/snowball-target.mdx b/units/en/unit5/snowball-target.mdx index a277b5d..5101716 100644 --- a/units/en/unit5/snowball-target.mdx +++ b/units/en/unit5/snowball-target.mdx @@ -1,14 +1,14 @@ # The SnowballTarget Environment -TODO Add gif snowballtarget environment +SnowballTarget ## The Agent's Goal -The first agent you're going to train is Julien the bear (the name is based after our [CTO Julien Chaumond](https://twitter.com/julien_c)) **to hit targets with snowballs**. +The first agent you're going to train is Julien the bear 🐻 (the name is based after our [CTO Julien Chaumond](https://twitter.com/julien_c)) **to hit targets with snowballs**. -The goal in this environment is that Julien the bear **hit as many targets as possible in the limited time** (1000 timesteps). To do that, it will need **to place itself correctly from the target and shoot**. +The goal in this environment is that Julien **hits as many targets as possible in the limited time** (1000 timesteps). To do that, it will need **to place itself correctly from the target and shoot**. -In addition, to avoid "snowball spamming" (aka shooting a snowball every timestep), **Julien the bear has a "cool off" system** (it needs to wait 0.5 seconds after a shoot to be able to shoot again). +In addition, to avoid "snowball spamming" (aka shooting a snowball every timestep), **Julien has a "cool off" system** (it needs to wait 0.5 seconds after a shoot to be able to shoot again).
Cool Off System @@ -17,8 +17,11 @@ In addition, to avoid "snowball spamming" (aka shooting a snowball every timeste ## The reward function and the reward engineering problem -The reward function is simple. **The environment gives a +1 reward every time the agent's snowball hits a target**. -Because the agent's goal is to maximize the expected cumulative reward, **it will try to hit as many targets as possible**. +The reward function is simple. **The environment gives a +1 reward every time the agent's snowball hits a target** and because the agent's goal is to maximize the expected cumulative reward, **it will try to hit as many targets as possible**. + +In terms of code it looks like this: + +Reward We could have a more complex reward function (with a penalty to push the agent to go faster, etc.). But when you design an environment, you need to avoid the *reward engineering problem*, which is having a too complex reward function to force your agent to behave as you want it to do. Why? Because by doing that, **you might miss interesting strategies that the agent will find with a simpler reward function**. @@ -38,11 +41,14 @@ Think of raycasts as lasers that will detect if it passes through an object. In this environment our agent have multiple set of raycasts: -- Raycasts +TODO: ADd explanation vector + +Obs ## The action space The action space is discrete with TODO ADD -IMAGE + +Action Space From 5d88a5b9e85807be12f115cf5b80a2b45ec4c4b5 Mon Sep 17 00:00:00 2001 From: Thomas Simonini Date: Sat, 7 Jan 2023 17:36:28 +0100 Subject: [PATCH 13/28] Update snowball-target.mdx --- units/en/unit5/snowball-target.mdx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/units/en/unit5/snowball-target.mdx b/units/en/unit5/snowball-target.mdx index 5101716..145d741 100644 --- a/units/en/unit5/snowball-target.mdx +++ b/units/en/unit5/snowball-target.mdx @@ -19,14 +19,15 @@ In addition, to avoid "snowball spamming" (aka shooting a snowball every timeste The reward function is simple. **The environment gives a +1 reward every time the agent's snowball hits a target** and because the agent's goal is to maximize the expected cumulative reward, **it will try to hit as many targets as possible**. -In terms of code it looks like this: - -Reward +Reward system We could have a more complex reward function (with a penalty to push the agent to go faster, etc.). But when you design an environment, you need to avoid the *reward engineering problem*, which is having a too complex reward function to force your agent to behave as you want it to do. Why? Because by doing that, **you might miss interesting strategies that the agent will find with a simpler reward function**. -Reward system +In terms of code it looks like this: + +Reward + ## The observation space From 1e28b345a3b78e8c567a258ec8c4e696c20fa410 Mon Sep 17 00:00:00 2001 From: Thomas Simonini Date: Sat, 7 Jan 2023 17:36:56 +0100 Subject: [PATCH 14/28] Update snowball-target.mdx --- units/en/unit5/snowball-target.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/units/en/unit5/snowball-target.mdx b/units/en/unit5/snowball-target.mdx index 145d741..8d3bc7a 100644 --- a/units/en/unit5/snowball-target.mdx +++ b/units/en/unit5/snowball-target.mdx @@ -26,7 +26,7 @@ Why? Because by doing that, **you might miss interesting strategies that the age In terms of code it looks like this: -Reward +Reward ## The observation space From ad006f116c4b5196f02cc87c28b17578faef4235 Mon Sep 17 00:00:00 2001 From: Thomas Simonini Date: Sat, 7 Jan 2023 17:39:17 +0100 Subject: [PATCH 15/28] Update snowball-target.mdx --- units/en/unit5/snowball-target.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/units/en/unit5/snowball-target.mdx b/units/en/unit5/snowball-target.mdx index 8d3bc7a..af6390a 100644 --- a/units/en/unit5/snowball-target.mdx +++ b/units/en/unit5/snowball-target.mdx @@ -44,12 +44,12 @@ Think of raycasts as lasers that will detect if it passes through an object. In this environment our agent have multiple set of raycasts: Raycasts -TODO: ADd explanation vector +In addition to raycasts, the agent gets a "can I shoot" bool as observation. -Obs +Obs ## The action space -The action space is discrete with TODO ADD +The action space is discrete: -Action Space +Action Space From b31054486c3fa64bf1fada10ce03f56fbb5ec5d3 Mon Sep 17 00:00:00 2001 From: Thomas Simonini Date: Sat, 7 Jan 2023 17:40:01 +0100 Subject: [PATCH 16/28] Update snowball-target.mdx --- units/en/unit5/snowball-target.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/units/en/unit5/snowball-target.mdx b/units/en/unit5/snowball-target.mdx index af6390a..21364b1 100644 --- a/units/en/unit5/snowball-target.mdx +++ b/units/en/unit5/snowball-target.mdx @@ -2,7 +2,7 @@ SnowballTarget -## The Agent's Goal +## The agent's Goal The first agent you're going to train is Julien the bear 🐻 (the name is based after our [CTO Julien Chaumond](https://twitter.com/julien_c)) **to hit targets with snowballs**. From cd118ad2cc36303c079856ebf452b6baf9d5d33b Mon Sep 17 00:00:00 2001 From: Thomas Simonini Date: Sat, 7 Jan 2023 17:50:40 +0100 Subject: [PATCH 17/28] Update pyramids.mdx --- units/en/unit5/pyramids.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/units/en/unit5/pyramids.mdx b/units/en/unit5/pyramids.mdx index 4ddf267..8983692 100644 --- a/units/en/unit5/pyramids.mdx +++ b/units/en/unit5/pyramids.mdx @@ -2,14 +2,14 @@ The goal in this environment is to train our agent to **get the gold brick on the top of the Pyramid. In order to do that, it needs to press a button to spawn a pyramid, navigate to the Pyramid, knock it over, and move to the gold brick at the top**. -Pyramids Environment +Pyramids Environment ## The reward function The reward function is: -Pyramids Environment +Pyramids Environment To train this new agent that seeks that button and then the Pyramid to destroy, we’ll use a combination of two types of rewards: From 19c387665718d1752fccf67ed79bc4017bde768c Mon Sep 17 00:00:00 2001 From: Thomas Simonini Date: Sat, 7 Jan 2023 17:54:05 +0100 Subject: [PATCH 18/28] Update pyramids.mdx --- units/en/unit5/pyramids.mdx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/units/en/unit5/pyramids.mdx b/units/en/unit5/pyramids.mdx index 8983692..c5d23f6 100644 --- a/units/en/unit5/pyramids.mdx +++ b/units/en/unit5/pyramids.mdx @@ -11,6 +11,9 @@ The reward function is: Pyramids Environment +In terms of code it looks like this +Pyramids Reward + To train this new agent that seeks that button and then the Pyramid to destroy, we’ll use a combination of two types of rewards: - The *extrinsic one* given by the environment (illustration above). @@ -26,11 +29,11 @@ In terms of observation, we **use 148 raycasts that can each detect objects** (s We also use a **boolean variable indicating the switch state** (did we turn on or not the switch to spawn the Pyramid) and a vector that **contains the agent’s speed**. -Pyramids obs code +Pyramids obs code ## The action space The action space is **discrete** with four possible actions: -Pyramids Environment +Pyramids Environment From 888bedbff49529f6a8bf305b9d9ea42806beb298 Mon Sep 17 00:00:00 2001 From: Thomas Simonini Date: Sat, 7 Jan 2023 17:55:10 +0100 Subject: [PATCH 19/28] Update hands-on.mdx --- units/en/unit5/hands-on.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/units/en/unit5/hands-on.mdx b/units/en/unit5/hands-on.mdx index 258ae79..f4e928a 100644 --- a/units/en/unit5/hands-on.mdx +++ b/units/en/unit5/hands-on.mdx @@ -22,8 +22,8 @@ There's no results to attain to validate this one. But if you want to get nice r - For [Pyramids](https://huggingface.co/spaces/unity/ML-Agents-Pyramids): Mean Reward = 1.75 - For [SnowballTarget](https://huggingface.co/spaces/ThomasSimonini/ML-Agents-SnowballTarget): Mean Reward ⁼ 15 or 30 targets shoot in an episode. - For more information about the certification process, check this section 👉 https://huggingface.co/deep-rl-course/en/unit0/introduction#certification-process +For more information about the certification process, check this section 👉 https://huggingface.co/deep-rl-course/en/unit0/introduction#certification-process - **To start the hands-on click on Open In Colab button** 👇 : +**To start the hands-on click on Open In Colab button** 👇 : - [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/deep-rl-class/blob/master/notebooks/unit5/unit5.ipynb) +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/deep-rl-class/blob/master/notebooks/unit5/unit5.ipynb) From 980f620191dfe5ecb1a686350700652d96be23e0 Mon Sep 17 00:00:00 2001 From: Thomas Simonini Date: Sun, 8 Jan 2023 09:29:49 +0100 Subject: [PATCH 20/28] Add explanation SnowballTarget --- units/en/unit5/snowball-target.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/units/en/unit5/snowball-target.mdx b/units/en/unit5/snowball-target.mdx index 21364b1..9b73e91 100644 --- a/units/en/unit5/snowball-target.mdx +++ b/units/en/unit5/snowball-target.mdx @@ -2,6 +2,8 @@ SnowballTarget +SnowballTarget is the environment we created at Hugging Face, and the assets are from [Kay Lousberg](https://kaylousberg.com/). We have an optional section at the end of this Unit **if you want to learn to use Unity and create your environments**. + ## The agent's Goal The first agent you're going to train is Julien the bear 🐻 (the name is based after our [CTO Julien Chaumond](https://twitter.com/julien_c)) **to hit targets with snowballs**. From 471cb9ac6a9e0061cc9f0aaf1174853799a3e4aa Mon Sep 17 00:00:00 2001 From: Thomas Simonini Date: Sun, 8 Jan 2023 09:37:31 +0100 Subject: [PATCH 21/28] Update snowball-target.mdx --- units/en/unit5/snowball-target.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/units/en/unit5/snowball-target.mdx b/units/en/unit5/snowball-target.mdx index 9b73e91..8c61c34 100644 --- a/units/en/unit5/snowball-target.mdx +++ b/units/en/unit5/snowball-target.mdx @@ -1,6 +1,6 @@ # The SnowballTarget Environment -SnowballTarget +SnowballTarget SnowballTarget is the environment we created at Hugging Face, and the assets are from [Kay Lousberg](https://kaylousberg.com/). We have an optional section at the end of this Unit **if you want to learn to use Unity and create your environments**. From f3b2cb11bcb2ff7cbd377b6a0585831377190878 Mon Sep 17 00:00:00 2001 From: Thomas Simonini Date: Sun, 8 Jan 2023 12:10:30 +0100 Subject: [PATCH 22/28] Update introduction.mdx --- units/en/unit5/introduction.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/units/en/unit5/introduction.mdx b/units/en/unit5/introduction.mdx index 5ef5795..0ac033f 100644 --- a/units/en/unit5/introduction.mdx +++ b/units/en/unit5/introduction.mdx @@ -1,5 +1,7 @@ # An Introduction to Unity ML-Agents [[introduction-to-ml-agents]] +thumbnail + One of the challenges in Reinforcement Learning is to **create environments**. Fortunately for us, we can use game engines. Game engines like [Unity](https://unity.com/), [Godot](https://godotengine.org/) or [Unreal Engine](https://www.unrealengine.com/), are programs made to create video games. They are perfectly suited for creating environments: they provide physics systems, 2D/3D rendering, and more. From d94825e7e6b208f940e7f5ea87bec8c35ec9f0a3 Mon Sep 17 00:00:00 2001 From: Thomas Simonini Date: Sun, 8 Jan 2023 12:12:21 +0100 Subject: [PATCH 23/28] Add notebook --- notebooks/unit5/unit5.ipynb | 816 ++++++++++++++++++++++++++++++++++++ 1 file changed, 816 insertions(+) create mode 100644 notebooks/unit5/unit5.ipynb diff --git a/notebooks/unit5/unit5.ipynb b/notebooks/unit5/unit5.ipynb new file mode 100644 index 0000000..31aeab3 --- /dev/null +++ b/notebooks/unit5/unit5.ipynb @@ -0,0 +1,816 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2D3NL_e4crQv" + }, + "source": [ + "# Unit 5: An Introduction to ML-Agents\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "source": [ + "\"Thumbnail\"/\n", + "\n", + "In this notebook, you'll learn about ML-Agents and you'll train two agents.\n", + "\n", + "- The first one will learn to **shoot snowballs onto spawning targets**.\n", + "- The second need to press a button to spawn a pyramid, then navigate to the pyramid, knock it over, **and move to the gold brick at the top**. To do that, it will need to explore its environment, and we will use a technique called curiosity.\n", + "\n", + "After that, you’ll be able **to watch your agents playing directly on your browser**.\n", + "\n", + "For more information about the certification process, check this section 👉 https://huggingface.co/deep-rl-course/en/unit0/introduction#certification-process" + ], + "metadata": { + "id": "97ZiytXEgqIz" + } + }, + { + "cell_type": "markdown", + "source": [ + "⬇️ Here is an example of what **you will achieve at the end of this unit.** ⬇️\n" + ], + "metadata": { + "id": "FMYrDriDujzX" + } + }, + { + "cell_type": "markdown", + "source": [ + "\"Pyramids\"/\n", + "\n", + "\"SnowballTarget\"/" + ], + "metadata": { + "id": "cBmFlh8suma-" + } + }, + { + "cell_type": "markdown", + "source": [ + "### 🎮 Environments: \n", + "\n", + "- [Pyramids](https://github.com/Unity-Technologies/ml-agents/blob/main/docs/Learning-Environment-Examples.md#pyramids)\n", + "- SnowballTarget\n", + "\n", + "### 📚 RL-Library: \n", + "\n", + "- [ML-Agents (HuggingFace Experimental Version)](https://github.com/huggingface/ml-agents)\n", + "\n", + "⚠ We're going to use an experimental version of ML-Agents were you can push to hub and load from hub Unity ML-Agents Models **you need to install the same version**" + ], + "metadata": { + "id": "A-cYE0K5iL-w" + } + }, + { + "cell_type": "markdown", + "source": [ + "We're constantly trying to improve our tutorials, so **if you find some issues in this notebook**, please [open an issue on the GitHub Repo](https://github.com/huggingface/deep-rl-class/issues)." + ], + "metadata": { + "id": "qEhtaFh9i31S" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Objectives of this notebook 🏆\n", + "\n", + "At the end of the notebook, you will:\n", + "\n", + "- Understand how works **ML-Agents**, the environment library.\n", + "- Be able to **train agents in Unity Environments**.\n" + ], + "metadata": { + "id": "j7f63r3Yi5vE" + } + }, + { + "cell_type": "markdown", + "source": [ + "## This notebook is from the Deep Reinforcement Learning Course\n", + "\"Deep" + ], + "metadata": { + "id": "viNzVbVaYvY3" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6p5HnEefISCB" + }, + "source": [ + "In this free course, you will:\n", + "\n", + "- 📖 Study Deep Reinforcement Learning in **theory and practice**.\n", + "- 🧑‍💻 Learn to **use famous Deep RL libraries** such as Stable Baselines3, RL Baselines3 Zoo, CleanRL and Sample Factory 2.0.\n", + "- 🤖 Train **agents in unique environments** \n", + "\n", + "And more check 📚 the syllabus 👉 https://huggingface.co/deep-rl-course/communication/publishing-schedule\n", + "\n", + "Don’t forget to **sign up to the course** (we are collecting your email to be able to **send you the links when each Unit is published and give you information about the challenges and updates).**\n", + "\n", + "\n", + "The best way to keep in touch is to join our discord server to exchange with the community and with us 👉🏻 https://discord.gg/ydHrjt3WP5" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Y-mo_6rXIjRi" + }, + "source": [ + "## Prerequisites 🏗️\n", + "Before diving into the notebook, you need to:\n", + "\n", + "🔲 📚 **Study [what is ML-Agents and how it works by reading Unit 5](https://huggingface.co/deep-rl-course/unit5/introduction)** 🤗 " + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Let's train our agents 🚀\n", + "\n", + "The ML-Agents integration on the Hub is **still experimental**, some features will be added in the future. \n", + "\n", + "But for now, **to validate this hands-on for the certification process, you just need to push your trained models to the Hub**. There’s no results to attain to validate this one. But if you want to get nice results you can try to attain:\n", + "\n", + "- For `Pyramids` : Mean Reward = 1.75\n", + "- For `SnowballTarget` : Mean Reward = 15 or 30 targets hit in an episode.\n" + ], + "metadata": { + "id": "xYO1uD5Ujgdh" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "an3ByrXYQ4iK" + }, + "source": [ + "## Clone the repository and install the dependencies 🔽\n", + "- We need to clone the repository, that **contains the experimental version of the library that allows you to push your trained agent to the Hub.**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "6WNoL04M7rTa" + }, + "outputs": [], + "source": [ + "%%capture\n", + "# Clone the repository (can take 1min)\n", + "!git clone --depth 1 https://github.com/huggingface/ml-agents/ " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "d8wmVcMk7xKo" + }, + "outputs": [], + "source": [ + "%%capture\n", + "# Go inside the repository and install the package\n", + "%cd ml-agents\n", + "!pip3 install -e ./ml-agents-envs\n", + "!pip3 install -e ./ml-agents" + ] + }, + { + "cell_type": "markdown", + "source": [ + "## SnowballTarget ⛄\n", + "\n", + "If you need a refresher on how this environments work check this section 👉\n", + "https://huggingface.co/deep-rl-course/unit5/snowball-target" + ], + "metadata": { + "id": "R5_7Ptd_kEcG" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HRY5ufKUKfhI" + }, + "source": [ + "### Download and move the environment zip file in `./training-envs-executables/linux/`\n", + "- Our environment executable is in a zip file.\n", + "- We need to download it and place it to `./training-envs-executables/linux/`\n", + "- We use a linux executable because we use colab, and colab machines OS is Ubuntu (linux)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "C9Ls6_6eOKiA" + }, + "outputs": [], + "source": [ + "# Here, we create training-envs-executables and linux\n", + "!mkdir ./training-envs-executables\n", + "!mkdir ./training-envs-executables/linux" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jsoZGxr1MIXY" + }, + "source": [ + "Download the file SnowballTarget.zip from https://drive.google.com/file/d/1YHHLjyj6gaZ3Gemx1hQgqrPgSS2ZhmB5 using `wget`. \n", + "\n", + "Check out the full solution to download large files from GDrive [here](https://bcrf.biochem.wisc.edu/2021/02/05/download-google-drive-files-using-wget/)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "QU6gi8CmWhnA" + }, + "outputs": [], + "source": [ + "!wget --load-cookies /tmp/cookies.txt \"https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1YHHLjyj6gaZ3Gemx1hQgqrPgSS2ZhmB5' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\\1\\n/p')&id=1YHHLjyj6gaZ3Gemx1hQgqrPgSS2ZhmB5\" -O ./training-envs-executables/linux/SnowballTarget.zip && rm -rf /tmp/cookies.txt" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5yIV74OPOa1i" + }, + "source": [ + "**OR** Download directly to local machine and then drag and drop the file from local machine to `./training-envs-executables/linux`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "8FPx0an9IAwO" + }, + "outputs": [], + "source": [ + "%%capture\n", + "!unzip -d ./training-envs-executables/linux/ ./training-envs-executables/linux/SnowballTarget.zip" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nyumV5XfPKzu" + }, + "source": [ + "Make sure your file is accessible " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "EdFsLJ11JvQf" + }, + "outputs": [], + "source": [ + "!chmod -R 755 ./training-envs-executables/linux/SnowballTarget" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Define the SnowballTarget config file\n", + "- In ML-Agents, you define the **training hyperparameters into config.yaml files.**\n", + "\n", + "There are multiple hyperparameters, to know them better you should check for each the explanation with [the documentation](https://github.com/Unity-Technologies/ml-agents/blob/release_20_docs/docs/Training-Configuration-File.md)\n", + "\n", + "\n", + "So you need to create a `SnowballTarget.yaml` config file in ./content/ml-agents/config/ppo/\n", + "\n", + "We'll give you here a first version of this config (to copy and paste into your `SnowballTarget.yaml file`), **but you should modify it**.\n", + "\n", + "```\n", + "behaviors:\n", + " SnowballTarget:\n", + " trainer_type: ppo\n", + " summary_freq: 10000\n", + " keep_checkpoints: 10\n", + " checkpoint_interval: 50000\n", + " max_steps: 800000\n", + " time_horizon: 64\n", + " threaded: true\n", + " hyperparameters:\n", + " learning_rate: 0.0003\n", + " learning_rate_schedule: linear\n", + " batch_size: 128\n", + " buffer_size: 2048\n", + " beta: 0.005\n", + " epsilon: 0.2\n", + " lambd: 0.95\n", + " num_epoch: 3\n", + " network_settings:\n", + " normalize: false\n", + " hidden_units: 256\n", + " num_layers: 2\n", + " vis_encode_type: simple\n", + " reward_signals:\n", + " extrinsic:\n", + " gamma: 0.99\n", + " strength: 1.0\n", + "```" + ], + "metadata": { + "id": "NAuEq32Mwvtz" + } + }, + { + "cell_type": "markdown", + "source": [ + "\"Config\n", + "\"Config" + ], + "metadata": { + "id": "4U3sRH4N4h_l" + } + }, + { + "cell_type": "markdown", + "source": [ + "As an experimentation, you should also try to modify some other hyperparameters, Unity provides a very [good documentation explaining each of them here](https://github.com/Unity-Technologies/ml-agents/blob/main/docs/Training-Configuration-File.md).\n", + "\n", + "Now that you've created the config file and understand what most of the hyperparameters does, we're ready to train our agent 🔥." + ], + "metadata": { + "id": "JJJdo_5AyoGo" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "f9fI555bO12v" + }, + "source": [ + "### Train the agent\n", + "\n", + "To train our agent, we just need to **launch mlagents-learn and select the executable containing the environment.**\n", + "\n", + "We define four parameters:\n", + "\n", + "1. `mlagents-learn `: the path where the hyperparameter config file is.\n", + "2. `--env`: where the environment executable is.\n", + "3. `--run_id`: the name you want to give to your training run id.\n", + "4. `--no-graphics`: to not launch the visualization during the training.\n", + "\n", + "\"MlAgents\n", + "\n", + "Train the model and use the `--resume` flag to continue training in case of interruption. \n", + "\n", + "> It will fail first time if and when you use `--resume`, try running the block again to bypass the error. \n", + "\n" + ] + }, + { + "cell_type": "markdown", + "source": [ + "The training will take 25 to 35min depending on your machine, go take a ☕️you deserve it 🤗." + ], + "metadata": { + "id": "lN32oWF8zPjs" + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "bS-Yh1UdHfzy" + }, + "outputs": [], + "source": [ + "!mlagents-learn ./config/ppo/SnowballTarget.yaml --env=./training-envs-executables/linux/SnowballTarget --run-id=\"SnowballTarget1\" --no-graphics" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5Vue94AzPy1t" + }, + "source": [ + "### Push the agent to the 🤗 Hub\n", + "\n", + "- Now that we trained our agent, we’re **ready to push it to the Hub to be able to visualize it playing on your browser🔥.**" + ] + }, + { + "cell_type": "markdown", + "source": [ + "To be able to share your model with the community there are three more steps to follow:\n", + "\n", + "1️⃣ (If it's not already done) create an account to HF ➡ https://huggingface.co/join\n", + "\n", + "2️⃣ Sign in and then, you need to store your authentication token from the Hugging Face website.\n", + "- Create a new token (https://huggingface.co/settings/tokens) **with write role**\n", + "\n", + "\"Create\n", + "\n", + "- Copy the token \n", + "- Run the cell below and paste the token" + ], + "metadata": { + "id": "izT6FpgNzZ6R" + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "rKt2vsYoK56o" + }, + "outputs": [], + "source": [ + "from huggingface_hub import notebook_login\n", + "notebook_login()" + ] + }, + { + "cell_type": "markdown", + "source": [ + "If you don't want to use a Google Colab or a Jupyter Notebook, you need to use this command instead: `huggingface-cli login`" + ], + "metadata": { + "id": "aSU9qD9_6dem" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Xi0y_VASRzJU" + }, + "source": [ + "Then, we simply need to run `mlagents-push-to-hf`.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "source": [ + "![image.png](data:image/png;base64,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7GMfC23rpJNO0hvf+Mbcvq9JRb3HX/7yl+uYY47RlVdeqa9+9aupj+fQQw/Vu971Ls2cObP2WE9Pj+bNm6f/8T/+h4aGhvSlL30p9XEAAACkr3lvlqa9YJr3iak/NnL/k6B9X0L2g/EUvLFvpoowhmiOg5gE5UOF7jeq7Mr08ZBjIkMWz//pAuUx5fJEgdVll12mbdu26b3vfa8OPPBAvfCFL9T27dt12WWXSZq4I8nw8LCWLFmS2lgqlYqeeOIJLV++XPfcc48qlYoGBgb06le/WqeccoqmTp2qc889V08++WTLRHdoaEgXXnhhLYTZtGmTfvjDH2rFihU6+uij9eY3v1kveclLQu8AtmDBAl122WU6+uij5Xmenn76ad10001asWKFBgYG9MpXvlKnnHKKBgYG9O53v1vr168PnHDPmDFDb37zm7Vr1y795Cc/0V133aV58+bprW99q+bNm6fp06frTW96U8v53/72t/Xb3/629ufTTz+9dtek7373u7rvvvsajh8bG9Py5ctb+r/gggt0+umnq6enRzt27NCdd96p22+/XTt27NCsWbN08skn64QTTgj/hjh0xhlnqKenRytWrNAPfvADbdu2TaeffrpOO+009ff36w1veIPWrl2rSy+91HnfQ0ND+uAHP6iDDjpInudp1apV+uUvf6mHH35YknTMMcfo5JNP1oIFCyLb6u/v1+te9zrr76sL//Zv/9YQVnzoQx/S/PnztXHjRl122WXaunVrw/FbtmzxbecTn/hELYTZvn27fvGLX2jZsmWaNWuWzj77bL3gBS/Q0NCQ3vve9+rpp59OddPbUqmk17zmNerp6dHPf/5z3XrrrZo+fbre8pa36PnPf776+/v12te+Vj/4wQ+0atWqhnNtXg/umgQAAPIXEbokfi7ssYnHPZVC4o7JwMZVKNIe4YrNOA2DGNNdciJasT0nt5AhunImKH8JbdPkuchlSQVNYfZ68MEH9cUvflGS9KIXvUhnnnmmJOm2226rPb5kyRKdfPLJOuCAA/Syl73MeQXF5CSsOWiQpOuuu04XXXSRPvCBD2h4eFivfe1rWya673rXu/TiF79YkrRu3TpddNFFuu222yRJN954o5YvX67Pf/7zmj17duAY/v7v/16LFi2S53m688479f73v18jIyMN4zj33HP1iU98InLC3dfXp507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Se95z3t0/PHH6/DDD9dXvvIVff/7369N9rds2aJbbrml4Zzf/e53WrhwoQYGBvTRj35UL3rRi7Rs2TINDAzo1a9+tU455RT19/erWq2qXC77Vod885vf1Ktf/Wodd9xxmjt3ri699FL98Ic/1IoVK3T00Ufr7LPP1vDwsHbt2hVYFfPNb35Txx9/vF7wghdo/vz5+trXvqa77rpLt99+u3bs2KG5c+fq5S9/uV784hdreHg4kw1u//KXv2h0dFQzZ87UCSecoKuvvlo333xz7TbcY2NjWr58ecuSnpNOOknnnnuu1q1bp/vvv1/33nuvNm/erFmzZumMM87QkiVL1NPTo9HRUf36179O/Tqq1apOPvlk3XjjjfrBD36gbdu21QKzvr4+7d69Wz/5yU+0atWqhvMmK5WOOOIIHX744br66qv1/e9/Xxs3bqydX61WValUApcnHXroofqHf/gHvfvd79ZDDz2k+++/Xw8++KAk6dhjj9Xf/u3f1pbHPfLII7rpppvSfTEceeyxx3TyySerr69P5557rqZNm6YVK1bUnvf7WfvRj36kM888U6effrqmT5+uT3ziEzrmmGO0bNkyzZo1S2effbZe8IIXqFQqaevWrfre976X9WUBAAB0sLA9UxLuBWNyitMtW2wba//9YjILYjxnkVVIO87DkaAKF9dLmYJOCqiYafi6swOZ733ve1q4cKH2228/HXPMMTrmmGNqz61cubJlcnjNNddo0aJFOuGEEzQ8PKy3vOUtestb3tJwzKZNm3T//ffr9NNP15QpUzRv3ryG50dGRvSf//mf+sxnPqP58+dr9uzZev/73197fnx8XLfffrte+MIXBm5SunLlSl1wwQW65JJLdMwxx2hoaEivec1r9JrXvMb3+MmlIWm66aab9OpXv1p/93d/p76+Pv3N3/yN/uZv/qb2/MjIiD75yU/6bi5cKpV08MEH6+CDD9brXve6lud37dql733ve/rWt76V6jVI0sMPP6y5c+fq6KOP1qc+9amG58bHx/XTn/5Ul156act5q1at0k9+8hOdf/756u/v14IFC3TRRRfVnt+2bZu+/e1v67zzzovc12fatGlasmSJlixZ0vKc53lauXKlLrnkkphXmL364HDWrFkN73fJ/2dNkj7/+c/rgAMO0OLFiwN/3kZGRvSNb3xDN9xwQ6rXAAAA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)" + ], + "metadata": { + "id": "NtuBFDHGzuG_" + } + }, + { + "cell_type": "markdown", + "source": [ + "And we define 4 parameters:\n", + "\n", + "1. `--run-id`: the name of the training run id.\n", + "2. `--local-dir`: where the agent was saved, it’s results/, so in my case results/First Training.\n", + "3. `--repo-id`: the name of the Hugging Face repo you want to create or update. It’s always /\n", + "If the repo does not exist **it will be created automatically**\n", + "4. `--commit-message`: since HF repos are git repository you need to define a commit message.\n", + "\n", + "\"Push" + ], + "metadata": { + "id": "KK4fPfnczunT" + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "dGEFAIboLVc6" + }, + "outputs": [], + "source": [ + "!mlagents-push-to-hf --run-id= # Add your run id --local-dir= # Your local dir --repo-id= # Your repo id --commit-message= # Your commit message" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Else, if everything worked you should have this at the end of the process(but with a different url 😆) :\n", + "\n", + "\n", + "\n", + "```\n", + "Your model is pushed to the hub. You can view your model here: https://huggingface.co/ThomasSimonini/ppo-SnowballTarget\n", + "```\n", + "\n", + "It’s the link to your model, it contains a model card that explains how to use it, your Tensorboard and your config file. **What’s awesome is that it’s a git repository, that means you can have different commits, update your repository with a new push etc.**" + ], + "metadata": { + "id": "yborB0850FTM" + } + }, + { + "cell_type": "markdown", + "source": [ + "But now comes the best: **being able to visualize your agent online 👀.**" + ], + "metadata": { + "id": "5Uaon2cg0NrL" + } + }, + { + "cell_type": "markdown", + "source": [ + "### Watch your agent playing 👀\n", + "\n", + "For this step it’s simple:\n", + "\n", + "1. Remember your repo-id\n", + "\n", + "2. Go here: https://singularite.itch.io/snowballtarget\n", + "\n", + "3. Launch the game and put it in full screen by clicking on the bottom right button\n", + "\n", + "\"Snowballtarget" + ], + "metadata": { + "id": "VMc4oOsE0QiZ" + } + }, + { + "cell_type": "markdown", + "source": [ + "1. In step 1, choose your model repository which is the model id (in my case ThomasSimonini/ppo-SnowballTarget).\n", + "\n", + "2. In step 2, **choose what model you want to replay**:\n", + " - I have multiple one, since we saved a model every 500000 timesteps. \n", + " - But if I want the more recent I choose `SnowballTarget.onnx`\n", + "\n", + "👉 What’s nice **is to try with different models step to see the improvement of the agent.**\n", + "\n", + "And don't hesitate to share the best score your agent gets on discord in #rl-i-made-this channel 🔥\n", + "\n", + "Let's now try a harder environment called Pyramids..." + ], + "metadata": { + "id": "Djs8c5rR0Z8a" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Pyramids 🏆\n", + "\n", + "### Download and move the environment zip file in `./training-envs-executables/linux/`\n", + "- Our environment executable is in a zip file.\n", + "- We need to download it and place it to `./training-envs-executables/linux/`\n", + "- We use a linux executable because we use colab, and colab machines OS is Ubuntu (linux)" + ], + "metadata": { + "id": "rVMwRi4y_tmx" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NyqYYkLyAVMK" + }, + "source": [ + "Download the file Pyramids.zip from https://drive.google.com/uc?export=download&id=1UiFNdKlsH0NTu32xV-giYUEVKV4-vc7H using `wget`. Check out the full solution to download large files from GDrive [here](https://bcrf.biochem.wisc.edu/2021/02/05/download-google-drive-files-using-wget/)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "AxojCsSVAVMP" + }, + "outputs": [], + "source": [ + "!wget --load-cookies /tmp/cookies.txt \"https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1UiFNdKlsH0NTu32xV-giYUEVKV4-vc7H' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\\1\\n/p')&id=1UiFNdKlsH0NTu32xV-giYUEVKV4-vc7H\" -O ./training-envs-executables/linux/Pyramids.zip && rm -rf /tmp/cookies.txt" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "bfs6CTJ1AVMP" + }, + "source": [ + "**OR** Download directly to local machine and then drag and drop the file from local machine to `./training-envs-executables/linux`" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "H7JmgOwcSSmF" + }, + "source": [ + "Wait for the upload to finish and then run the command below. \n", + "\n", + "![image.png](data:image/png;base64,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)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "i2E3K4V2AVMP" + }, + "outputs": [], + "source": [ + "%%capture\n", + "!unzip -d ./training-envs-executables/linux/ ./training-envs-executables/linux/Pyramids.zip" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KmKYBgHTAVMP" + }, + "source": [ + "Make sure your file is accessible " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Im-nwvLPAVMP" + }, + "outputs": [], + "source": [ + "!chmod -R 755 ./training-envs-executables/linux/Pyramids/Pyramids" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Modify the PyramidsRND config file\n", + "- Contrary to the first environment which was a custom one, **Pyramids was made by the Unity team**.\n", + "- So the PyramidsRND config file already exists and is in ./content/ml-agents/config/ppo/PyramidsRND.yaml\n", + "- You might asked why \"RND\" in PyramidsRND. RND stands for *random network distillation* it's a way to generate curiosity rewards. If you want to know more on that we wrote an article explaning this technique: https://medium.com/data-from-the-trenches/curiosity-driven-learning-through-random-network-distillation-488ffd8e5938\n", + "\n", + "For this training, we’ll modify one thing:\n", + "- The total training steps hyperparameter is too high since we can hit the benchmark (mean reward = 1.75) in only 1M training steps.\n", + "👉 To do that, we go to config/ppo/PyramidsRND.yaml,**and modify these to max_steps to 1000000.**\n", + "\n", + "\"Pyramids" + ], + "metadata": { + "id": "fqceIATXAgih" + } + }, + { + "cell_type": "markdown", + "source": [ + "As an experimentation, you should also try to modify some other hyperparameters, Unity provides a very [good documentation explaining each of them here](https://github.com/Unity-Technologies/ml-agents/blob/main/docs/Training-Configuration-File.md).\n", + "\n", + "We’re now ready to train our agent 🔥." + ], + "metadata": { + "id": "RI-5aPL7BWVk" + } + }, + { + "cell_type": "markdown", + "source": [ + "### Train the agent\n", + "\n", + "The training will take 30 to 45min depending on your machine, go take a ☕️you deserve it 🤗." + ], + "metadata": { + "id": "s5hr1rvIBdZH" + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "fXi4-IaHBhqD" + }, + "outputs": [], + "source": [ + "!mlagents-learn ./config/ppo/PyramidsRND.yaml --env=./trained-envs-executables/linux/Pyramids/Pyramids --run-id=\"Pyramids Training\" --no-graphics" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "txonKxuSByut" + }, + "source": [ + "### Push the agent to the 🤗 Hub\n", + "\n", + "- Now that we trained our agent, we’re **ready to push it to the Hub to be able to visualize it playing on your browser🔥.**" + ] + }, + { + "cell_type": "code", + "source": [ + "!mlagents-push-to-hf --run-id= # Add your run id --local-dir= # Your local dir --repo-id= # Your repo id --commit-message= # Your commit message" + ], + "metadata": { + "id": "yiEQbv7rB4mU" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Watch your agent playing 👀\n", + "\n", + "The temporary link for Pyramids demo is: https://singularite.itch.io/pyramids" + ], + "metadata": { + "id": "7aZfgxo-CDeQ" + } + }, + { + "cell_type": "markdown", + "source": [ + "### 🎁 Bonus: Why not train on another environment?\n", + "Now that you know how to train an agent using MLAgents, **why not try another environment?** \n", + "\n", + "MLAgents provides 18 different and we’re building some custom ones. The best way to learn is to try things of your own, have fun.\n", + "\n" + ], + "metadata": { + "id": "hGG_oq2n0wjB" + } + }, + { + "cell_type": "markdown", + "source": [ + "![cover](https://miro.medium.com/max/1400/0*xERdThTRRM2k_U9f.png)" + ], + "metadata": { + "id": "KSAkJxSr0z6-" + } + }, + { + "cell_type": "markdown", + "source": [ + "You have the full list of the one currently available on Hugging Face here 👉 https://github.com/huggingface/ml-agents#the-environments\n", + "\n", + "For the demos to visualize your agent, the temporary link is: https://singularite.itch.io\n", + "\n", + "We have: \n", + "- [Worm](https://singularite.itch.io/worm), where you teach a **worm to crawl**.\n", + "- [Walker](https://singularite.itch.io/walker): teach an agent **to walk towards a goal**.\n", + "\n", + "If you want new demos to be added, please open an issue: https://github.com/huggingface/deep-rl-class" + ], + "metadata": { + "id": "YiyF4FX-04JB" + } + }, + { + "cell_type": "markdown", + "source": [ + "That’s all for today. Congrats on finishing this tutorial!\n", + "\n", + "The best way to learn is to practice and try stuff. Why not try another environment? ML-Agents has 18 different environments, but you can also create your own? Check the documentation and have fun!\n", + "\n", + "See you on Unit 6 🔥,\n", + "\n", + "## Keep Learning, Stay awesome 🤗" + ], + "metadata": { + "id": "PI6dPWmh064H" + } + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "provenance": [], + "private_outputs": true, + "include_colab_link": true + }, + "gpuClass": "standard", + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file From e909adee3f3e08793e480c54c26ba29f5859b233 Mon Sep 17 00:00:00 2001 From: simoninithomas Date: Sun, 8 Jan 2023 15:49:22 +0100 Subject: [PATCH 24/28] Cleanups --- units/en/unit5/conclusion.mdx | 4 ++-- units/en/unit5/hands-on.mdx | 6 +++--- units/en/unit5/introduction.mdx | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/units/en/unit5/conclusion.mdx b/units/en/unit5/conclusion.mdx index 8f173fc..339336a 100644 --- a/units/en/unit5/conclusion.mdx +++ b/units/en/unit5/conclusion.mdx @@ -5,8 +5,8 @@ Congrats on finishing this unit! You’ve just trained your first ML-Agents and The best way to learn is to **practice and try stuff**. Why not try another environment? [ML-Agents has 18 different environments](https://github.com/Unity-Technologies/ml-agents/blob/develop/docs/Learning-Environment-Examples.md). For instance: -- [Worm](https://huggingface.co/spaces/unity/ML-Agents-Worm), where you teach a worm to crawl. -- [Walker](https://huggingface.co/spaces/unity/ML-Agents-Walker): teach an agent to walk towards a goal. +- [Worm](https://singularite.itch.io/worm), where you teach a worm to crawl. +- [Walker](https://singularite.itch.io/walker): teach an agent to walk towards a goal. Check the documentation to find how to train them and the list of already integrated MLAgents environments on the Hub: https://github.com/huggingface/ml-agents#getting-started diff --git a/units/en/unit5/hands-on.mdx b/units/en/unit5/hands-on.mdx index f4e928a..c306385 100644 --- a/units/en/unit5/hands-on.mdx +++ b/units/en/unit5/hands-on.mdx @@ -17,10 +17,10 @@ Now that we learned what is ML-Agents, how it works and that we studied the two After that, you'll be able to watch your agents playing directly on your browser. The ML-Agents integration on the Hub **is still experimental**, some features will be added in the future. But for now, to validate this hands-on for the certification process, you just need to push your trained models to the Hub. -There's no results to attain to validate this one. But if you want to get nice results you can try to attain: +There's no results to attain to validate this one. But if you want to get nice results you can try to reach: -- For [Pyramids](https://huggingface.co/spaces/unity/ML-Agents-Pyramids): Mean Reward = 1.75 -- For [SnowballTarget](https://huggingface.co/spaces/ThomasSimonini/ML-Agents-SnowballTarget): Mean Reward ⁼ 15 or 30 targets shoot in an episode. +- For [Pyramids](https://singularite.itch.io/pyramids): Mean Reward = 1.75 +- For [SnowballTarget](https://singularite.itch.io/snowballtarget): Mean Reward = 15 or 30 targets shoot in an episode. For more information about the certification process, check this section 👉 https://huggingface.co/deep-rl-course/en/unit0/introduction#certification-process diff --git a/units/en/unit5/introduction.mdx b/units/en/unit5/introduction.mdx index 0ac033f..37da2f3 100644 --- a/units/en/unit5/introduction.mdx +++ b/units/en/unit5/introduction.mdx @@ -3,7 +3,7 @@ thumbnail One of the challenges in Reinforcement Learning is to **create environments**. Fortunately for us, we can use game engines. -Game engines like [Unity](https://unity.com/), [Godot](https://godotengine.org/) or [Unreal Engine](https://www.unrealengine.com/), are programs made to create video games. They are perfectly suited +Indeed, these engines like [Unity](https://unity.com/), [Godot](https://godotengine.org/) or [Unreal Engine](https://www.unrealengine.com/), are programs made to create video games. They are perfectly suited for creating environments: they provide physics systems, 2D/3D rendering, and more. From e6d2f8482bed1f54a9a087c429eb963e2f0b6ea2 Mon Sep 17 00:00:00 2001 From: Thomas Simonini Date: Sun, 8 Jan 2023 16:20:13 +0100 Subject: [PATCH 25/28] Update notebook --- notebooks/unit5/unit5.ipynb | 114 +++++++++++++++++++++++++----------- 1 file changed, 81 insertions(+), 33 deletions(-) diff --git a/notebooks/unit5/unit5.ipynb b/notebooks/unit5/unit5.ipynb index 31aeab3..c84ad48 100644 --- a/notebooks/unit5/unit5.ipynb +++ b/notebooks/unit5/unit5.ipynb @@ -25,12 +25,12 @@ "source": [ "\"Thumbnail\"/\n", "\n", - "In this notebook, you'll learn about ML-Agents and you'll train two agents.\n", + "In this notebook, you'll learn about ML-Agents and train two agents.\n", "\n", "- The first one will learn to **shoot snowballs onto spawning targets**.\n", "- The second need to press a button to spawn a pyramid, then navigate to the pyramid, knock it over, **and move to the gold brick at the top**. To do that, it will need to explore its environment, and we will use a technique called curiosity.\n", "\n", - "After that, you’ll be able **to watch your agents playing directly on your browser**.\n", + "After that, you'll be able **to watch your agents playing directly on your browser**.\n", "\n", "For more information about the certification process, check this section 👉 https://huggingface.co/deep-rl-course/en/unit0/introduction#certification-process" ], @@ -157,6 +157,29 @@ "id": "xYO1uD5Ujgdh" } }, + { + "cell_type": "markdown", + "source": [ + "## Set the GPU 💪\n", + "- To **accelerate the agent's training, we'll use a GPU**. To do that, go to `Runtime > Change Runtime type`\n", + "\n", + "\"GPU" + ], + "metadata": { + "id": "DssdIjk_8vZE" + } + }, + { + "cell_type": "markdown", + "source": [ + "- `Hardware Accelerator > GPU`\n", + "\n", + "\"GPU" + ], + "metadata": { + "id": "sTfCXHy68xBv" + } + }, { "cell_type": "markdown", "metadata": { @@ -176,7 +199,7 @@ "outputs": [], "source": [ "%%capture\n", - "# Clone the repository (can take 1min)\n", + "# Clone the repository\n", "!git clone --depth 1 https://github.com/huggingface/ml-agents/ " ] }, @@ -263,6 +286,15 @@ "**OR** Download directly to local machine and then drag and drop the file from local machine to `./training-envs-executables/linux`" ] }, + { + "cell_type": "markdown", + "source": [ + "We unzip the executable.zip file" + ], + "metadata": { + "id": "_LLVaEEK3ayi" + } + }, { "cell_type": "code", "execution_count": null, @@ -301,7 +333,7 @@ "### Define the SnowballTarget config file\n", "- In ML-Agents, you define the **training hyperparameters into config.yaml files.**\n", "\n", - "There are multiple hyperparameters, to know them better you should check for each the explanation with [the documentation](https://github.com/Unity-Technologies/ml-agents/blob/release_20_docs/docs/Training-Configuration-File.md)\n", + "There are multiple hyperparameters. To know them better, you should check for each explanation with [the documentation](https://github.com/Unity-Technologies/ml-agents/blob/release_20_docs/docs/Training-Configuration-File.md)\n", "\n", "\n", "So you need to create a `SnowballTarget.yaml` config file in ./content/ml-agents/config/ppo/\n", @@ -315,7 +347,7 @@ " summary_freq: 10000\n", " keep_checkpoints: 10\n", " checkpoint_interval: 50000\n", - " max_steps: 800000\n", + " max_steps: 200000\n", " time_horizon: 64\n", " threaded: true\n", " hyperparameters:\n", @@ -355,9 +387,9 @@ { "cell_type": "markdown", "source": [ - "As an experimentation, you should also try to modify some other hyperparameters, Unity provides a very [good documentation explaining each of them here](https://github.com/Unity-Technologies/ml-agents/blob/main/docs/Training-Configuration-File.md).\n", + "As an experimentation, you should also try to modify some other hyperparameters. Unity provides very [good documentation explaining each of them here](https://github.com/Unity-Technologies/ml-agents/blob/main/docs/Training-Configuration-File.md).\n", "\n", - "Now that you've created the config file and understand what most of the hyperparameters does, we're ready to train our agent 🔥." + "Now that you've created the config file and understand what most hyperparameters do, we're ready to train our agent 🔥." ], "metadata": { "id": "JJJdo_5AyoGo" @@ -391,7 +423,7 @@ { "cell_type": "markdown", "source": [ - "The training will take 25 to 35min depending on your machine, go take a ☕️you deserve it 🤗." + "The training will take 10 to 35min depending on your config, go take a ☕️you deserve it 🤗." ], "metadata": { "id": "lN32oWF8zPjs" @@ -405,7 +437,7 @@ }, "outputs": [], "source": [ - "!mlagents-learn ./config/ppo/SnowballTarget.yaml --env=./training-envs-executables/linux/SnowballTarget --run-id=\"SnowballTarget1\" --no-graphics" + "!mlagents-learn ./config/ppo/SnowballTarget.yaml --env=./training-envs-executables/linux/SnowballTarget/SnowballTarget --run-id=\"SnowballTarget1\" --no-graphics" ] }, { @@ -461,26 +493,9 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "Xi0y_VASRzJU" - }, "source": [ "Then, we simply need to run `mlagents-push-to-hf`.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "source": [ - "![image.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGIAAAIMCAYAAAC+HQqPAAAgAElEQVR4nOzdeZxcdZ3v/3dVd6eTXpIQQiBAkARCFHUiQVYRRRmHcUFHUIMK6jguA8Oo9+qg9yE6PnTGDfHOHZArIFxFR1Dx4YKOP5FFIaCGRUSDEAghARKSELJ0Z+vqOr8/Ol2p5Szf7znfs1TV63mvQ6fqnO/3e6qrk/q++/P9npIkHfbpP3iCex4vKwAAAACgjZRKeY+go635zEtK5bwH0bEIYQAAAAAA7Ya5bOoIYtLAGxcAAAAA0K48j3ltighiXOPNCgAAAADoBMxvU9Gb9wA6Cm/SjPA6AwAAAGAvk0x4HvvGOEYQ4wohTAZ4jQEAAABMmpwfEBKgvbA0yQVCmJR5IoQBAAAA4I/5QuqY8zpFEIMC4y9UAAAAAKaYP6SKMMYZliYlxZsxBbymAAAAAOJiyRKKjSAmCUIYh3gtAQAAALhUP8cglHGCjXudIIiJixDGAV5DAAAAAFkglHGGMCYxgpg4CGEM8ToBAAAAKJqoeQohQyTCmEQIYmwRwoiABQAAAEDnspnvdHEYQRgTG0GMja4OYbr52gEAAADAT5cveSKMiYUgxlTXhTDddr0AAAAAkESXhjKEMdYIYkx0RQjTDdeYo654DwEAAKBtMZF2rPnzf4e/voQxVghionTkBLoTr6kAOvK9AgAAgK4Q9lmWCbYDfq9vh72uhDHGOjOIYUJcpwNfC76/AAAAQHaK/Pm7rSf+Qa9rG1+Ty/dKW39vw3VeEFPkvyRS18HX3tXfVwAAAAC+6ucJHTNx77JlTUE6uMKms4KYrpusd/j1dt33EwAAAEBsHRnKSF0dzEx+Tzvq+9lJQUzXTNo7/Dq75vsIAAAAIDUdG8pIXRnMdFh1TGcEMR0/ee/w6+v47x8AAACA3HR0KCPtmy924rXV6aAwpv2DmI6exHfwtXX09w0AAABAIXV0KNMlgUwHaO8gpmMn8x14XR37vUrO68TvNwAAAAqnxAS9UceGMvXzi066LnVMVUx7BzEdp8Mm5IQvvgheAAAAkIfmz6EEM3U6OpTppOtRR4Qx7RvEdNQkv5OuRR32vUmO4AUAAABFRDAToONCGZYsFU17BjEdM9HvkOvomO9HMgQuAAAAaGdBn2e7OqBpnuu0dTDTQYFMm1fFtF8Q0xGT/ja/hoJ9DwhAAAAAgPQU5fN2IQKhjghmOiSQaeMwpr2CmIIFAPZyHn+bv35F+QcAAAAAQPYKWbHjao6VS6DQAYFMm4Yx7RPEtHmIkFsI08avG8ELAAAAgCgdsddNrvvStHkg04ZhTHsEMW0bJuQ47jZ8zQhelHvRFAAAADpMe81PnWj7YCa3UKaNA5k2C2OKH8S0YaBAAGOm64KXLrtcAAAAFIDJZ9D2mb/G0tbBTC6hTJsGMm0UxhQ7iGmjUGECAUyYjg5eOvjSAAAA0OG6LKxp22Am81CmDQOZNgljihvEtEGwsA+b8Ppp6+ClMEMvzEAAAADQFlKahMb5WFr8+bCkNg1mMg1l2iyQaYMwpphBTEGDhVYEMPUKH7wUZniFGQgAAAA6js1nzZQnq6ZDKdicue2Cmcl5IYHMPpm9JvEUK4gpWLAQrADjLMBrVbjgJbfhFOx1AAAAAIwUpMwlahg5z6XbJpghkGlV0OqYXhXl1StAsBCtAGPM6XUqVOiS2VAKdM0AAABAIeSwoUxQlznNZP3mRoUKZwhkGhWwOqYYFTGFD2EKMr6MXqdChS5Syi9/wa4VAAAAaHsZlbg0d5PjPDtoDpVrQJNZNUgbBTLFCGNK+QcxhQ5hCjS2lF6nwoUuk5wOq6DX6FKhf44AAACQWDEmkI6kVOJSoGBmUu7LmjKtBmmDQKYgYUy+QUxhJ48FGpfj16jzg5eCXp8Lhf15AQAAQOrCPgsWYGLphuOAhmCmruMsA4g2CGRyll8QU8hJZYHG1OkBjJPhFOyaXCnkzwYAAAAKq+NDGr/ri3FdBQ9mUg9lMt8rpaCBTAGqYvJfmlQIBZr4pjAJzz2E6dRqFwITAAAAFF0an1kLEe44SFUKFsxkFspkHkQUMJDJOYzJJ4gpzAS2KONQZwUwnRa8FOb9CgAAABRA0OfjXAOazgpmUg9lcgkiChjI5CT7IKYwk9oCjKMTNuBN3FXnfh8AAACArhL1uTqXKoyWQWTahAup7SuT222dCxLI5FgVk20QU5gJb47jSPE1SDWASdR03kujivK+c6GTrgUAAADJtVF1QSGCmrAxGPbvaMuauJwHM7kFEgUIZHK69uyCmMJMhnMYR8rX7jyAabfQpTDvrbjaffwAAADIj81nyYKHNrkHNQlKYHIMZ5wsY8p1z5ScA5kcrj2bIKYwE+WMx9EuAUzsZjrr9TRThDEAAAAAcaTxWTbLUpC87g4VM2XJIZzx5CULYyZ1W4VMxmFM+kFMISbPUmYT6AyuN3EAE+v0LPedyfM9U5T3a5sqzM87AACAI4W4Q1CRRX3+y6osJOsNhGPu7JvBhsCT88VES5Zy2z9Gyi2QyTCMSTeIKcykLINxFD2AsT61M14zn05z6DMFhfnZAgAA6HBF/tzVFiFRzkGN3/cvldfNUdWMw6F1RiDTmWFMekFMYf7CSnkcHRPAtP/rtLejjPpxoDA/IwAAAGhLcT9PFirAySGoyS2csQxmXN0cKclypVojed5hqfPCmHSCmMJMMNs3XEh/+VGad1hK+/tfgPdXYd7jAAAAgCUXn2Uzm5BnFNRkEs5YBjMOQxkn1TFSToFMDkuVUg5j3AcxhZmgtmfQkG4Ak9K4U/2e5/R+Ksz7uB3wWgEAgG5RpEqSnOV+h6NJKe6I23yNqQYz2YQyTqpjpJzuspRxdUyK1+guiCnUxLW9Qhgndz/KMoBJ7XvdLRsCu9Qp1wEAANAOivLZqw0CoVyDmpTCmVSDmexCGadhjJRDdUwOd+pyfI1ugphCTWrbp+qjbQKYVL6/7btsLLkijw0AAADF5+rzZI6BTuZBTQq74qYWzMQIZSy7drZUScqhOqb9941JHsQUasLbHiGMkwBmoiHbJyzadv1apvC9Kcx7ryjjAAAAAGzYfo7NoRIhSOJJccrBTNahTIJAhjDGtEt31THJgpjCTISlrgph0qqCcXqt7bIcyqjzHPtuA7w8AACgm7TBqqD05HCHoyDOq1EcBzOpVMsYpC0x8on2DWNy4uA64wcxhDB2TRW1Cqao4Uum768ivZcLgpcEAADAn+nnpC6Yj7bKMahxftejFIMZp6GRT1sxqmPac9+YHKpiHIkXxBDCmDdTxADG2fevXYKXIr1fVbjhJNNRFwMAAGDAcOLXDh+TMp/DZhzUOK1KcXTbIslxWBGSuljmFM7CGCnDQCanMCZhVYz721dnqgtCGJfLkJxcVxE3AC7Iv3IFGYY7HXdBAAAADnRQSUzhLsVkQEnu3eyqKsVRKOO8SsZNGCM52sRXyiiQab8wxj6IKUw1THFDmM4LYIq0+W+O7z9nXRflZwgAAADpaZfPfAYTyQJtDeM/mDj3cHZVLVOkUCagOibPfWNqDWa5ZKn47IKYTg5h2iKAMTqg7tAk40l4LUWqvsmkm6L8bAAAAAA2HJTF5F5Z42A/FyfBjKN9ZRKHFj7JS8x9YyZOSSGQkRyHMu1VFWMexOQewqTYf8JrSxzAuAxfpJjX04HBS+Lm8n7PF4eX+88/AABAsZU6/jf9Np8HA16LzAIbB1UzzoOZhOGQdf8h1TGWw0klkJFSqJJpnzDGLIjp1FsHd30Ak3f4kvbrl1K/jhBuAAAAdI52+myXfmiUMHFJZauYhNUqiYMZh/1b9e1m75iJU9ohkGmPMCY6iOnEECbPAMZ1+CJZXE+ewUtWoUu+/wC20z/A6eE1AAAAnaIzq1xsPrOmG9okSFwSrwLKKxjx6z9m38b9uquOmTit6IFM8cOY8CAmt0llMatgui6AybPiJfTUbN+XhCvdfv0AAKB72X4O6rzgJv/QJqz/uv4Sr0ZKEMw4rZaJ0W8nBjIdHsYEBzGdFsIUMoBJOyBJM9xx1J/Rqe7fE8UJV4oyDgAAACTXDp/t0pucZh/aRIQniYpeHAUzrvZ2MenPRSATZyubtDb1dRLGSJkHMgZj9w9icpmkFq8KpmsCmNjf74K9PvUtdOKSuqIrTLgFAADgWEdtxGvzmS2/0CZeUJNVMJNFKBOjv1iBTMhrlHeFjJMwRsqlOiZi7K1BDCHMxGmxw5LYT4aclkIAk3X4ksLrkm3Y0oUhA8EKAADABNvPRR0T3OQX2oR91jcPaSyCmbYIZSwCmaTVMZNP5V0h06FhTG/LgZkrVgjT0QFMluFLWwQvBQkaCDwAAAA6S1E/3+W+8e6kZONonhc4CWZiV8vEPDFWKGMRyOS8f8zEqY4CGadhjJRpIBMw9t7ak7ko1n4wsUIY14FDGregjvV65P9auAlecnpvF/UfXwAAAHQvm8+ouYU29v2mHsykXS3jKjRx1nZAdYxhl62nOghknIUxEyPKPIyRGsYfffvq1KQwUS3MMqR2DWDaOXzJKPggYAEAAEA3MP3c6zywCerXvB83wYzLUCbDPV7C2na1XCngqehWve4NY6SG8ecUxDiezGZ9R6SiBzBW7eZ7/fGCl+K8f7oLrxMAAIC/TtkTJobMqmz8+jFrr37OkU8oY3mSVSCTw3KlyacIY2J0OfGa5hDEFGcSbR3CuKz+SCuASO3OSo7aUZzwxcF7pmPCloJdR8GGAwAAkDrfeVueH4raKAQK+0yexl2SfIcQp1omp1DGOpDJeClUzOqYxEuVnIYx+cg4iHH4F1TCibW7ECbtAMZlBUwXhC9tE7iksTTPfZMAAABoktdnrsB5Z9wBFWwiG/Q5PuVbPttXy6QRyrgKZGIshbJ+fd0tV0pUHdPOd1NSpkFMMUIYApgkh5u3k8mSo8KFLo7GU7TLklTQQQEAABRMihM653mLTYM5hjaxA5pk1TLZhjI5BjI5L1fq1jAmx816Y+r4EMbi2Mh2bdpy0IZsA5h2CF5cLItK3kRKjQEAAMCpwpXLOMpbChjaWN/+2S4dcR7KuA5kCrFciTAmroyCmPz3+HATwnRYFUxXhy8J23U2rA4LVgpXpQQAAOBA4fejsP0MFnA9mYY2Dl/T5s+gVtUyaYYycatkDAIZqzDGqFPLdkPajrlUKbY23DMmgyCmzUIYF+FEbhUwhu05CJlSC1+cT+RNw60M+2oHBCoAAAD7xP1sVNjJYZzrCZhsx24iqAEHr5lVtYzdEia7UCbp0qWIRKNQd1dKVh1TjLspZVcVU/ylSR0bwmQcwCQMX4ofvMS5fqcnuEUQAgAA0P7y/kznNAhKObwpRR2UYOlKQzPuqmWchjJtH8iEVMcQxrRIOYhJuvwj7xCmuwOYVMIXJ/8YhbQR2XyG/xjm/Q+vM51yHQAAAFkoUBVM7pU8Jv2Xwg91HdBYBTPm1TKJQ5miBzJJqmMIY1oUtyKmXUKY3MIK2wDGdfiSZdWLz/lZBy65hSqEIAAAAO2lCJ/fEk4i43z2jT35jQhYrAOarIIZs1BmokmTNlMIZCY6D2vItMMYIQ9hTJgUg5gEfwF1XAhT7ADGefiSafCS3/vMsrMM+0pHxxT4AAAApKBY28HE/eCWcPJr3I3tXYgaTvZ/2jeYiXE9xiGGfbVM5oHMROd7D3EYyCQJYwy6mDh072uW692U0gtjilsRE0Omd0ZytXGuq7YsA5hihS8pBy+pJAjZphLFCUEKMxAAAIACKRXi81ryMMj2Ihzt21JrLm5AUwrIRYpVLWO2fCluIOOqoiWDtrKqjnEWxkiuA5mUgpjsqxQyC2FcBhiFDWBcvg4WfSQJxqR0xuRYsiEW4F93AAAA+CjC57T4YVD8uapphxa3TvY9Pcadj9IOZmyqW3ybigplbAMZw0ogoxDFZXVMQFttFcZMjMJlGFOsipiOCGHaNYBJO3xxHLzEHov7fyTth1KEf6iT6oRrAAAASKJQa5GUZDmS6efZ9AIbwwoM48H4hBK+OUWCZUxGoYxZ++FLl1JcsuSqOqbo+8YUMIxJIYiJ+RdAN4Qw7RjAFCV8sR5H8qDArsssg4mChCAFGQYAAEDmfKsr8uBqcmnWl/NtYELHYBnOGIUhe9t1XS3jKJRJJ5DJoDqGMMZasSpiLBUnhMmqDfPj8wtgvNA/GvVtPYaYIZ7xaWn+I5ug7SL82y+pQAMBAABIWcSdfLISeMcg6wYsmPS1r92oz9rRc2LLcCbWJrspVMs4CDc8z3O4h0xG1TFdF8ZISQIZx0FMdtUwbRPCZFwFEx7AZFR5knrVi90Yw5tN619R07Apo34AAADgQBE+e/lUdFieblMFY8c8rLFebeTbfsAJsaplHIcyVlUyrc9H32nJcSBjHCClFMZYKEYYMzGSuNfRG/tM30HEOa2bQ5iCBDCFD1/Mx5d+6GLRRiEqbjJUhFsFAAAApKFQ96ZOmMJYZTB2VTBmgtr0X/oU/tLHCGbiLmFyEcpkFcgkXa6URxhjmWm0exjjqCImuwlYZ4QwWQUwEX0lDWByDl/SCV1cV7Jk9LNBCAIAAJCeInzWcrqkIrIziwzGVVjj145tOGMQksStlnERyqQeyGRVHUMYk5SDICbBX0qWf6F1XwgTfmzsKhir170dwhcHFT2xmnP4D3IR/nEHAABAcSX9vGg16Yzqy3CvnMi9bEz2JWk9xyxLSataJiqUyTOQ8amOCR1SkkDFVRhj12zr4UUIY6yrYkoJg5jsQhg3Ug5hEp1rfmwxApgMAq3AJhJch1UTjt6jhCwAAADIm8lnUuNJqWEVTNhhgdU0tuFMySxLsa2WiR3KuA5kgjf0nTjVMJBJUh2Tahjj00YXhDEJgphsJ5dW1TB5VMJkUAWTeQBTmPAlYfASeDpBS7hOvS4AAIC0FWlPGQvJb3VU31hYQyEZjG0405iE5BPK+FWguApkwtuJvsOSg+oYwhjjUZgOOmYQk3CClvaSJJ8Wog/JIYQxDBwKH8DkFr7YVrvEfB8VtXorCwUZBgAAQNsw3jclC44DIWdBTUDY0lrsEnC8WbVKdqGMSSAT0n5zP5aBjNvqmPYNYxLJeM8YyyAm+79QklfCmJyXdwiTZxVMzACmKOGLq9Alk7Alg/eyc4UZCAAAQHvwClINYxUIORpzoqDGr7Ld53jf6woLICaet99XJk4o03R+S3ZiWCWTIJBJXh3TvmFMoqoYyVEYYzZgiyAm+2UcbkKYFKs54oQkhamCCQpg0gtf0gtebN4naQYLUe81R+0AAACgwAryWc6TjGewpagxpxjUJA1njKpOWoOb6GoZi1AmKjBJLZBJqzomZHwxxmR2bkgbbRfGRDMMYgryl0mQQoUwaVbBFDGAcR2+RAUveYUuBm1FHlKEn6OUx1CESwQAAHApkwKXtDox/HAWGdp4BkNMsD+Hb3Mmy4/kE8zYVstIXlMbrV1HtGlUJdO09MpmH5nAACO8OmbilIjAJDTkiFMdY3BNkWFHzmFMYtGDNQhiHM6s0qiGiVshUcAQJr0AJizcCKrciRe+uA9eDNpwErgkrWZJOoaE5+cYgCTfwwkAAKDA6ufYeQYmTrq2rD5peDpiAK6raoyrZ1wHMwmrZSJDk73nNOQV6QYykdUxod3HCWMizos8N+D8rMKYDKpiIoKYfEIY8zaNH2w6JMMQJq0qmMwDmCzDlzSDF5PvU6wD4p+boGlCEAAAgOzk+tlrcg6eKJGJqmzJI6ixuB6jjV4CAo/AcYQHJuahjGkg03RO3EDG6XKlhEuVsg5jAobSenaelTHh1x4SxOT3l0z8v+DaL4RJJ4BpOj+FACZR+JJZ8OJzXmBTKQUtkRlMmwUpHXurbgAAgAQyvNtK0s+PpdDAJIegxjegMS17iApmfEKXlmKWkOoWq1Am40DGeXVMgqVKWYcxBs3uO2xvCBWnIivFn+uAIMbxZCuTJUmEMC3nph7AhI0n66oX09Alzns7fkVLKkELYQgAAECx5Pn5zHKyGPX5NPOgxvfOSDHDGdtgpr5vZ6FMQBu2+8ikFMgEV8cEjaGlQ/8nYt7pqXau0abN7bZvTPAAfYKY/EIY8zYjH4gxjuxCmHYLYMzDl7BxRJybSvBi02a8qpZEQQuBCgAAAJKK+5kyYOKbKKgJ3ScmrGKi+SFH4UzkuqL6uUvyUCZ5lUxQZYpB4hBjuVKypUqO943J4PbWRdIUxOQbwhhNamMVNOQRwmRVBVOEACaL8CWqwiair6jj0ghb2iZocTjOdrlkAAAAG84megWaMYZ9Vg2ZEId9No4X0kTt8zL5UNNxkWFJ8/kW1TKxQpmYgUxm1TFphDEB4yloGGNdFeNkeZL/4AxvX52+1PaFadcQxnUVjPMAJiwYySJ8cR+6xHoPph62pNS+82ZJYAAAQAfzJDchSn2FhoPmfDloOKuQpiXkqD3o23rjH5uDGYtQRoqolvEJQ2rNBgUQMQMZk6VFcQIZi6VKhds3JlKGYUxK6oKYfKthzNqMfMByDHmHMBlUwaQZwKQdvth+vw1DF+vAxfl72aA9ghIAAICCcT1f8nvQYdhj1FSM/hyGNP7hjF/7UVUzzYGJabgz2VRUGNLUR2iVjGkgk/JyJYulSoUKY4yrUOKHOVZhTEpVMelUxGSyJIkQJqpf/7aCxhjR1uTjpt+HOHd3smk/6LmW5izei04Dl6j3iuV5hVH08QEAAGTN5W/XHX7WqjUVsQlq4NPphzTxw5mwwESyW1pUf55JlUxY+zaBTEBli+/BMatjLJYqpbqJb1ZhTPxsJgONg+vd92A+8rmrTAFDmNSrYFwGMEmrX8LCl7ivw+RDJqGeq/dcnLAlzZ+1FNsmfwEAAAhgU4ESV9JlHFFPB1RDpB3SGIQzpeZqF8kumIm7hMnZXY4SBDJR/SaqjvE/J5VNfONUlaQcxmRfFdPIfUVM3kuSUglhoprKI4Sxaaf18ehlSBYBTKL9bELa9XsuTsVL4vekbeBi25+Dn5lUghLSFwAAAGMNH51cpzJhoYgNw/1Xag+HHO8ipDEIZ4yqZkLDlabnGv5oGco4DGSS7x/j12cR9o2xDWNCxh03AEkjjHFi38DcBjFpLEnyOSu+uCGMb+lFaJvOQ5ioQMSwP+MApuHLNAIYw9fbNniJHbrYhi2RTzrqI2abeSrgkAAAAGKJPUdL85fTCSaO1reXDps/BYzD6u5Ifu02nR9RNdNSMWMcyqjxGkxCmcAqmbBAxn8M3t6+jfePMaqO8Q9Wwtvx77O9whi/1yy4yVgcV8W4C2LSCmFsmrUNU+KeF5kFuAhhkgYiYSFMggCmaOFLrODF5nuadthSgNTCyRAKcB0AAACuNXzEcTQJS9xMgs9dXsgArAOUoM+9Nu2blC2EBzMtS5kCwxW//sIClIjxGe/lEtTWRFJgvFzJVXWM5b4xnR7G5FMV4yqISf0WvrWOYo4hrRDGL+zIMIRxEsDUPZ55AJNV+NLSePQxtm1GNuPoZ8TZj1ryhoheAABAd9n36SfRtM11uGPdRNjnWJ/G0gxobO9uJFkFMyXjTXvr5yV+QU7CQCbRciXT6pjmYCQihTDcNyZ8E982CGNcclgVkzyIiRHCpFINE6eRuOFNwPNOQ5ioIMNlFUysvgLOMQ19fA5xF764DF5SDFys399FCU+IYAAAQHdzFMlI8hwVyFi2Eni431wgxQqa0L1ewtqqb6PunFihjEmVTFCA4zMOv0Bmsu/Q5UpJq2PSC2MmDvWrjkkjjAkRJ4wxyGayr4pJGsRkGsK4rJCIOidq8h0zhLHeDyZZAFNddYeqa+9VddNKeSObJK8a0T8AAAAAIBelskpDs1U+YKHKhx6rniNeXvekSXWMaSVOWBsBfSmFMMZ/QOHHxgpwLLqPbMtNVUz8ICbNEMbnzHjjCApULM+JqBhpDWFiVsE0fBkvhJkMYCr3Xy9v+4aQPgEAAAAAheFV5W3foPHtGzS+apkq91+v3iVL1bNgMpCxrI5pONx22Y9/gOM0jImzRCn0PMPzfc/I9nbW7m9fHSD7ShjbEMZkCUqKIUxYPxZVMOPLv6XKn38a0h8AAAAAoOi87Rs09uv/I2/T4+o9/rz6Z/b+tymQSVIdk3gT34KHMS6rYoz6D1eO3WkaCGFa2zCsgpkIYb5JCAMAAAAAHaTy55+q8vtv+UwNfeaOQXNUr/5w23l2jK05AruwmTNH5A42e5maNJfhXpj2QUxaS5KcXbNtQ0UJYRp+MgLObz1m8pDqqjtU+fNNIf0BAAAAANpR5c8/VXXVHQFhjMU8shBhjGmfBo1kdgdnt33Hq4ixED+EiVsNY3NOkUKYqPP9q2Amf6gq918f0h8AAAAAoJ1Nzvl8C19sVlbkHsY4WsESeZ7Pua6rYmKGMXZBjGUn2Ycwtt/QqCZyCGHCyslamp/4orrqTjbmBQAAAIAO5m3foOqqOzQ5D0y8VKn2Rcg82mD+6zSMCZSk8sUujMmCeRCTWclPViGMX4AS/nwmIUz4oFpCGEmqrr03pE8AAAAAQCfYN/cLC2NMlio1H2ozD08xjIkz5488z04WVTGpLU2KVw3jOISxOb5wIUzrD5BfCCNJ1U0rQ/oFAAAAAHSCxrnfxJwx3lKluvlmVmGMf8MGfRm253CJUtrMgpg0qmFsQhi7huqeMnwjFDKEaXy6fj+YxuM8eSObQvoGAAAAAHSCibmf//zR3VKloM4ThjGBTTsMYxxJuyomlYqYyEHbhjBpbs7bBiGMf7/15WTVkP4BAAAAAB2hNvezCWMslir5tm1wbqSoMMakr6TnpFwVYzHe6CAm9b1hkoQwLsfmOoQxKPVyEcIAAAAAALpHbaoZsGIi9lIlBc9dTc6tPW1bmBHSX5w7KTnKEKyrYiw4r4ixr4YJO9bl2rCwapg0QpiIPpyFMKQxAAAAANA9ouaEFkuVrNo1GFOt6Yg5edphjKmcptPhQYzrakCu3vgAACAASURBVBibJUlp75ZsFcLY9JNVCONTYgYAAAAA6AI5hzEGc+Zcb2udV1WMYR5RllSyazmkzwSJmZPzTJOy0CYMqmnyCmEaStAAAAAAAN1r7wQxcJ6YdRhjWuQQYz6b5pYpOUyvnS1Nym5Jki3zJCxZCON3iuMQJu54AAAAAACdITQ4aV45UfAwJs0lSgWuigkOYlKd4BdzSVJkf5nfHaku4bQeDwAAAACgI1kFJxPzytZNfLMLY0I5CWMSiqwrcduvk4oYZ9UwzkMYi5Qr6s2Tegjjn1z6tum/DTYAAAAAoFu0zAujghO/6hhHYUzr4JqajVh9YhPGGPRX17H9OS6Ez9dL/kGMxSTfPhmKc7EOKmEamol6U2QTwuz7ubF4sxPAAAAAAAAmtYQxIasq0gpjXGze63+WRV8Jq2gyrIpxfvvqFk6qYeKc0/xm8n88zxDG95yw9X2uNjoCAAAAALQpk3Ai7TDGb1jRS5Ts94sx7SuuoNwg6Gg3/SYKYnKthsmrxKi5D9chTC17MQmEvGwuFQAAAABQIBZhTMgqjFhhTFD/kedMHhK24sX4QZsGnOYHxjlISJ+tQYzLpS9pVsPYdOq8GibFEMZ4HIQwAAAAANB1opYIBe4b07TiIlYYE9G/7zkmYUzU5NYkeHIkg3l27IqYYlbDdFgI47sprxd8PAAAAACgwzVXukSFFGFzWNswJmI+7HtOyHF+xySe4haoKiZA+nvERHG20U6SFyL9ECb4sZAQxrZ/AAAAAEAXMJgbhgYorW2FhjG2fYedVxueyZw3Yky2VTGONu6dOMTkIP9jyiYHxesw8A/ZMa6GsWgsZggTeHekWCFMfepJGAMAAAAA3SdJGGNZROBk897WE5zsF5PWxr0pyrciJpNqmKhvtGk1jILf4JmHMAHjAAAAAAB0uOY5YcDcsvaQeRjTOh01CGOC+vU9x++QOMuYIlsN69DsPFdVMT7SCWIyzQeCvuExzo0T9BiFMD7tuQphyGIAAAAAoHvY/KK/9pBpGOM3LY2Ys0YtUXK+X4xpVYyDybKTTKi1kXLYk/7jsB2Jo+oWmxc24I0QXvYUMR6j4CQohGl609uEMN7kYf4/OK7uYw4AAAAAaBO1OaLBXLP2kEkY47UeatyO6TmtJ9gvUUrIZuPeiP7jzMnz36zXhM2ar8Acx0UKZ/7NCgxh/L6OvD21zw8XIQwAAAAAdB1v7/+Lmi8ahzEBX1tv3ht5XDi7ObtpP3GKMVLQ1FfZZgDONul1cuejsJKoqLaaE66QapugECbwDRwRwjT/QMQJYUQIAwAAAADdLDSMqf3HIIwJaSMwjMlsiZLFoU6DFbuqGFvFr4hJcoejWhNJUzCT4Kb5qYxCmCxTPAAAAABAvurmgLUwJmCJUevXrW1EhTFNJwa30fB0vDCmWFUx5nNt21tZ9xq3bNZ7RidHVcMk7af5TVT/VPAbwz+Esei2w0KY3lJJiwcHNH/qFM3snXirbalUtHrXHv1hdIcqOY+/t0daPL9Xh88pa+ZgaWJ8o55Wb6jqgccrqoznOjypRyof0Scd1KvS0MT4vBFPWl9R9bExKe/xAQAAAMiH50mlvXMEeSqpNPmEVP+1V9r7x/rHg9r0O8ST55UmuwodR62BWjsGfRppbjfs0PrxOObqcmQRxKS/Sa/psXZLkuyrYUKSvFghTEC4Ynzrr/YLYY4dGtR5B87WScODGiuXNDBligb7Jt5qo2MV7dizR31VT3dvH9V1z2zSPSOj2Y7vyF6de1q/TlzUq7HxkganljU4baI4bHRnVaO7qurr8fTbhyu67rbduvfRSqbjKx/Vp57XDKp0dJ/K42WVp/WpPG3i9avurKi6c0zVnqq8FWMa/+Woqo+MZTo+AAAAAAXQHMb4hi4hYUxgiNKaODTmGwkTiZawpLE9z/NUMg5TTMcSclxoeGN+rY2BWNBBE/N4dxUxmVXDJGnHsJ+ocqrA5xKGMH7lZG0Uwuzf16tPHXaIjh0e1MEzp2tw2lSVy42r3/bb+99qtarZM3fp2OFB3bt9VJ9d85Q2jaUbeOw/XNLFbxvQsUf26uADpmhooFflcuMPyqwZk+PzdMB+FR17RK/ufayiz92wQ5u2pfu6l6aX1XvedJWPmqL+OUPqHZyqUtP4NHPiP17VU2XWLu0+aoqqj+xR5bpt8rZWUx0fAAAAgIJJI4wJ+DowjIlTFWMdxrioiokbxpg1YcMoiHG2MWzq1TDNTcSshok8vrnqxu/crEKYYoQyxw4N6isL5ungGcPab/pw5PHlclnDgwNaNDigOdu26yWD0/Q/V61NrTrm2CN6dcnfD+jgA6Zo1owpBuMrafpQn6YP9WnOrD1afHiPPnrtjtSqY8pH9an3H2dqypwB9c8cijy+VC6pb3ia+oanaff+Iyod0afKFVuojgEAAAA6XnCYYhbGNDfXFKQEnd9ycsIwJq6W5hy3H91hYm42623JAvIIByyqYRIvSYp6KiC0SSOEKUAOc+zQoK448nmaP3uWUQjTbL/pwzp89ix97cjn6aVDg+7Hd0SvLv/HQc0/ZKpRCNNs1owpmn/IVF3+wUEde6TbbZWkvSHMh2dq2qEzjEKYZv0zhzTt0Bnq/fBMlY/qcz4+AAAAAEXTNBH028DX9zifx5rO9zut1rLx/LN5fu13SHiRgd3GvVFtG7RhenFhTRiOMTKISf82yabth1XDtD4XWg0Tpy+f55LfIcnnuDYLYfbv69VXFszTgbNmamDa1NjtDEybqgNnzdRXFszT7D53Ycf+wyVd8vcDOmh2vwanxW93cFqvDprdr0veM6D9p7tLQ0vTy+r9x5madsAM9Q70x26nd6B/oo1/nKnSjOLfDA0AAABATIEhS1AY03R8UBhjeJzVLa39jgtuzEBQwGPTTpyJtNvJd/IZm3GO4iK9Mus3NDkzqoYJGkvMEMZ/lP4hTO0r0xAm3zTmU4cdooNnDCcKYSYNTJuquTOGdfFhhzgY2YSL3zaxHClJCDNpcNrE3jIXv23Awcgm9J43XVPmDCQKYWptDfRPtHXudAcjAwAAAFBMYRUvfmFMwIqNkHOjzgkMY5rH2fC0ydw1qirGQpxzHVTFmAgNYuJVw6SRRMVI1mz5vTlC9oVpfSwkhDGqZvHqnmqPEObYoUEdOzwYazlSkP2mD+vY4UEnS5SOPbJXxx7ZG2s5UpBZM6bo2CN6nSxRKh/VN7Exb4zlSEH6Zw6pfNQUligBAAAAHc0sjNn3tP8qjMgwJqwAwXdYAUURoVP68HltYKGFSVVMnCVKCZnkKMkqYjqpGiaq4YY+Ao6NrKjZe1DLmzlJCJNfGHPegbN18Ez31RcHz5yucw+cnbidc0/r18EHuAthJh18wBSde1ryCpae1wyqf467EGZS/5wh9bzG/V47AAAAAIrE7xf8zUcEFQyEnGu0X0xIVUycJUrWx+TB3bgCg5jiVMOk3UZAM5FLkpoaiKyoae6o9c3dTiFMb6mkk4YHNehgSVKzwWlTddLwoHqN7x3fqrdHOnFRr4YG3G+uOzTQqxMX9aq3J0EjPVLp6D71Drp//XoHp6p0dJ+UZHwAAAAACsovUAmubPEi5qFGK1D8gpzQIQatHgk4N+7GvWlUxWSwaW/8ipg0MgCTW0pnUQ0TZ1+YyP7Ck8jYIUxOWcziwQGNlUsql91vDFsulzVWLmnxYPy9WBbP79XYeEnlsvvbmJXLJY2Nl7R4fvyQp3xEn8rjZZVSGF+pXFJ5vKzyESxPAgAAADqTQaBiunmvb3sGc14130XJNNBpZ24uoCyfG2I7rYZJdPci8/7sN/GJ+0YISvYMSrFMysGsQ5h83snzp07RwBT3y34mDUyZovlT47d/+JyyBqemd/egwallHT4nQfsH9ao8Lb2gpDytTzrIfTUQAAAAgJzZzA+t9otp7sfsOGdLlDqsKiZMvJlk4rm/6QuTpCPTYCTsWL9qGL82DCpvQt7w+9bttUcII0kze3s16PA2080G+3o1szd++zMHSxqclmIQM62smYPxq1lKQyWVHdzJKUh5Wq9KQ+6rbQAAAADkLWSe2PK1avPM4P1iAh4L6Dq0r5bjgwoZTI53LM22/boLudCWmWr6e8Mk4BecKCQZi27I4NiQ84xODS8BCw1hfL+W+Q8JAAAAAKADBcwzA+bM+x71m2dGhzjhx8VYohR5nP8xiapiDPtwf3yLkn3JgNX1JKlycRQ0RFbDBB3bXA1j8AY0ClP2vVGCQ6+gpNKnsianPGZLpaLRsUpq7Y+OVbSlEr/9LaOeRndWHY6o0ejOqraMxn/xvRFP1Z3pvX7VnRV5I4R1AAAAQOcKX3nReGhTMYBNiGO4RKmlPd/zm5/OeM7i+o7OUuglBM35yyYHxe7VuAnTEqjW/pxVwzhfkhRe9hW+Oa/feUEhTD6T7dW79mjHnj2ptb9jzx6t3hW//dUbqhrdlWIQs6uq1RsStL++ourOMXcDalLdOSatTy/oAQAAAJAT36lnxNxRap13moY4gWMIq4qJPDnk6fA5fidUxdhVxLTbL9htqmHCG2r8uuX7HtZP67lmd0gyC2Hy+pb8YXSH+qqeqlX3YUe1WlVf1dMfRnfEbuOBxyvq6/FUrbp/hapVT309nh54PH7QUX1sTNWeqrwUxudVPVV7qqo+ll7QAwAAACAvPtUrAQUAQWGM9S2tjZYoNU9vE1TFONvPJc22w7vZ91Trk+WwJ5P15lsPFe+4wlTDhLxZm48zSeOsQpjmpvJNxSqep7u3j2p05y7nbY/u3KW7t4+qkuAHpDIu/fbhikZ2uK8KGdlR0W8frqgynqCRcclbMabKqPvXrzK6S96KMSnJ+AAAAAAUm+882Qt5rPn0qHmrSUVN6AMh5yerQDGviknI9s5PhtK7rUxRJaqGUWsIYnSno/qnJt8gYeeFtFXXf/3/zcN1z2zS01u2OW/36S3bdN0zmxK3c91tu/X0RvfLp57euEfX3bY7cTvjvxzV7g0jDkbUaPeGEY3/ctR5uwAAAADy5z8PjJpP1j9cV3xgWgwQMIrWr0OqYkKbKUJVTHpz6+bCl7LfgwFnRj2QqchqGNPkymaD3pYuw8bQem7k5rwNX/s85jU/YvIDkp57RkZ17/ZRPbdtu7M2n9u2XfduH9U9I8mDhHsfrejexyravNVdGLN56x7d+1hF9z6avNKm+siYqo/s0e4t7sKY3VtGVH1kj6qPsCwJAAAA6ExewHwwLFQxmS9HFCG0nBdcUWO2RMm2iiWnqhhTkZnTvgPSqYjJYFmSk/5tTjdtJ1aA03xea/VL/evQ+EOXbyD22TVPad3W7drhYInSjp27tG7rdn12zVMORjbhczfs0NMb92jUwR2KRndW9PTGPfrcDfH3rmlWuW6b9mzYocqO5BU2lR27J9q6zn2VEgAAAIAiCQpjFBCg+DxW31Jo4YVtiBN3jmqSGaTZdtCphkUeFsyCmHarhgk8saWhsCcbvzaphgl5naKXJJn8oIT8sOVk01hF/3PVWj2zeUuiMGbHzl16ZvMW/c9Va7XJ4W2xN23z9NFrd2j9pt2JwpjRnRWt37RbH712hzZtc/fie1urqlyxRTs3bk0UxlR27J5o44ot8ramd7coAAAAADkLXSlhuNpCkrMlSgHHpFMV09yH64lxNhPtjPaIKVI1THhbiaph/I7xGkuQfJ4MeKz5p6suhLEaT/ruGRnVPz76hB7ftDnWMqXntm3X6k2bdf6jTzhZktTs3kcruuD/jurxp3bFWqa0eesePf7ULl3wf0edLElqVn1kTJX/vUU7n9waa5nS7i0j2vnkVlX+9xaWJAEAAAAdL+yX+fXP+53T/LDpvDyiKsYvxHHFKmxJFuwkHkPkApqJA3oklWe84v2fMm8oqmWHpUK+zbdRNUzkec39+QVWPo83POap+uefBrSbnXV7xnTT5i06uNyjKbv3qL+nrL7eHpVKJd/jq9WqRnbs1OqNz+o3z27RBY89oUd3JV+eEzi+zVXddM8eHTyzpCnlcU3pK6mvtxwyPk/bRyt6/Kld+s2f9ujCr4/qsXXpVZp4z1ZV/e0uebOksfJulfrKKvf1Bo7Pq3qqjOzSzie3qPLADlX+zxZ5T3ObJAAAAKDT9bzozL1flaTSxH9LDX9Wy/Ohj9XNOUqm5zSdF9hX82EB/TaO3WcO1DIvKjU93dqvXzNx2g4+LuCcsMMkbfvNlZ/tDT/EkpM1VpPHtHwRs11XqVxUiFL/taMlSYElZ8WohGm2aayiDz32hI4dGtR5B87WScODGiuXNDBligb7Jt5qo2MV7dizR33VidtfX/fMplSqYPw8u83Th68e1bFH9urc0yo6cVGvxsZLGpxa1uC0ieKw0Z1Vje6qqq/H028frui623anUgXjx9ta1dhlW1Q+qk/V1+xR6eg+lcfLKk/rU3naxOtX3VlRdeeYqj1VeSvGNP7LUapgAAAAgK7kSV5JKnnyVFKp9ufW51vTgbrHPK8xZPDUeo7vY1Hn+fUbfjmBhzf3FbuhLM6PZhnExAkAYizncdp21GF1oYlJOVXkRrv7Hku8JGnv48EhTEB5Wc7uHRnVvSOj6i2VtHhwQPOnTtHM3om32pZKRat37dEfRneo4nw9n+H4Hp2461Fvj7R4fq8On1PWzMGJH7Qto55Wb6jqgccrquRUYDJxN6UtUo9UPqJPOqhXpaGJ8XkjnrS+oupjYxIFMAAAAEAX8g9W/MOY5nMCnt8bdEy20nJOZLgSdIwnzyvVZShBAZBtgGNwjO8hCUIWqzAoXHgQY7UUy2E1TMAAQjfiiWy3vrzEpsqmdRy+bdY/FmdJku/qKL99YUL6KZiK59VCmSKqjE+GMnmPJMD4RCgjKl4AAAAATGqoPPELVuofC3veP5Tw5KkU2mb9w35VMT5DNs0wYlbFeJ4XuK1DdJ/uApaJ9hSZ9aS8WW/MahijgMGwbatqmIj2TathVFcNY7okqb7PqCVLbRDCAAAAAABS4js/DFqTETYHrT8sbA4a8ljjkxFfN/05cO9WRytrMps323VkEcQkqUaxOC7gkGTVMKbHxn2T1T3mBb/9wytb/MIcv+dD3sQAAAAAgC7UHMYE/fK+NbzxPyqkcKDlYb95dPRhgZxMcS3m/TbHONpeIziISdx+0gTL5QsXfrzrahjzcwyWJAWmkAHnAwAAAAA6WPRKitYwxm/u6DPfrJvDeqHz0ebH/AoHUqiKCQlCQos3Cib50qQiV8O0fK8N3wghYwl+0qAaJjC4afxBCnlr+fwgtc+bDQAAAACQUP08MHT1RPPDhnPI0LsRGxZFZFYVY1DAYTTkbOfVhkFMGoNqh2qYqJAnZkA02UBoG83PU/0CAAAAAJgUEMY0V8WEnWuyRMmkkkZqnQO3HGNaFRNwTOSxNmxzBcs2I05NVhFj82JFthXUhaNqmNAnI6phDEMV82oYvzfTxP/xfI+Pag8AAAAA0B2CfkkfEsa0VMVEdREVqhiM0bDpwHPjxApZVLY46MM/iHE99gS3rI7Rmf/X1i9WghAkdAlU/cONCWbIWzWknIwwBgAAAAC6i+czp4x5rklVTGQbwV0ZV8WENxLzeYvXJ8PlSQYVMYGlKnbHWx+T4DzDahjP703hvBpGsnmTB/9QBIwPAAAAANCF/MIYk6qYiDZrX8aoijEpSvBp2ubc4AZs5Te5Tr5ZbxSrTXobj7VflmQbGkUOqPVx22qYyOMn/o9nenzD+AhmAAAAAKC7hMyFjcOYsAKA+mYnz7SoikmyV4xPF7YCc4RYc2dXGUMjx0FMkaphwo+Pfcvq5nPqq2FsN+iNDF1MflBIYgAAAACga5gEKHEbDpljBt7OOqpNqyEEBTZR8/WIeXWs/uPwfL9sFi+Icbl2Ku1qmNBjbEqtYlTVNP+AhLYclkgSugAAAAAApMhf0seuignqzqR4wL4qxv2trOPIZ47dGsR4gX+w5yywiRGChIzBqBomsNnGN3To3jBh5wf+MBg2RDADAAAAAJDkbm6YV1VMmqtrkjbhft6d/h4xDVIODmzDjLBzbUOk0L1hbKM+8yVJGW7sDAAAAAAoBJ9AJLeqmOb+Ig8Mbzb2pr1e3cMRq2FcSDAZL0sqORpFglOavxkhbTlblmRzTNiyIUOR1TAJ2gYAAAAAdJnwX9r7hyOG8+KoYMWk8MB3eZLtWOwPTSyDaoeMK2Ky4GBZkuEL779Jb9xqGP8eoqthSG0AAAAAoFvEywn2/cI/aVWM1fYc9f07OcaBWIGQzdiij7UPYjJfC2PYX+JlSSleV6xqmPAfBkIYAAAAAOhG9RvdWlbFGE8hDcOZoH5rT0fPve2WJ5nPgTNZnhQ5CP+HQ4KYrAbpcllSyNIi4+H4fLN83tjpV8O0DCz9wAgAAAAA0KH2zVOdVMVYT02j5vMxTq8bk3V7LsQsVGkMYpzmBhHpk+OMIrr/gGVJaX+fnFTDhC1JIpgBAAAAgO4StyrGZg4coxggcfFAXvPbiEoev2MSKPgeMaZlUEnbDKmkIecAAAAAABRGXWWL1/yYeRuxq2LqWzApEiji8qSc5/mOghg3V2G/LMlkDBaPB/YRc1lSFtUwBEUAAAAAAJuqGJtGm4MTo+U4NvNz24obv8eLNjEOH0/OFTEOXqzYy5LU+oZqKzHKxAAAAAAA7a0pVGldomTeRtKqmKYGg8dgtdQn6Rw34zmyfQhUsgtiXKVMRs1ktSwp5FifRLE41TAAAAAAgO5jOlcOq4pJOoTJ2W3MVRrGgVHTvNu6Ab+VN17DfwLbdLVPjM8p5bAnCyPXZUlFEvADBQAAAADoHomrYvbNKaOrYmLMP0OP9w84jKfkHTANDqiIcX1l0e2F7g9j06xpO9ZvDNO20qyGcTBWAAAAAECbiwpHMqiKqfXgM5f1PTDluWuet7G2lOMeMdm9MJFLevzeEDbLktIQuCSJahgAAAAAQL2w21kHn9NYOFB/ikFVTKJNexUxxqB+HC9PyomDICaNZT5R39yAFz/pG8G1JNUw0Q03tQEAAAAA6Hy2v6T3q4oJa9eFqLmq/5OZ7xjS0l/TA6b7xEQd1/R0Oaid1PiO2dGyJNMDopK3sOdtNum1ErYkieAFAAAAAKCQOafNXjE2c9joqpjW5UlBTZn0Y6DN58XmFTFtsZltq+h9fs3SQy/md9q8Gsa0MRehDwAAAACg/UWtrjCfPzbOXZu/jj+8REUStS8NlySFHBerACQlPkFM3oMzXZbT9LWTZC3JtfuVe9m2F1EN43c8AAAAAKCLhIcqRlUxkXNNF2zm9mn1YXBuDtPqDDbrTRAgxE6sYi47qj0VZ1lSnOHZtsESJQAAAABAvah5pcE8cu/5wVUx2S1Pyv821k0Nm+4TY9FswiAmpzTAVbd5LUsyHlrYD0x+6R0AAAAAIE9hoUdUmJFkFUdccatjTFfBxO3XIYvxua+ICevc56k012lF3ra68egkPcVblhSVLPqOj2oYAAAAAEC9oPmkaWFAWvPMqHbj9usFfK3QTKIo+8SYBTEFGWzgi220cY/BN9jnDVqrhnGyLKmpxCvoqMhqGL/xAgAAAAA6XsuyIf+DAqfxEQUA+S9PyjKCSHuliX/DCSpiTEYaI6hInV+wEn5o/F5MAxvbahjCFwAAAADoTj5VL5P/9Z0qttsv94Ouz+DQ+AdFNOHoNdrbTNn30VQZ9hF0oQlPD2w09qXHWZbkYBlSIX9gAAAAAACpC62KCVqGZBrY+FXFJGFRoBDZlMlqmKgmXBWVxH9x3O4Rk8cSptBvRNyKHG/v/09rWVJw38EvYVC/hDEAAAAA0N38w5eGW1kHnmPYftTypJamTdv3nytbF1fEPjn7OXV0EOO4BKex6bgvTtwQJJsXON6ypKDH/V44k3YBAAAAAJ2pfh7ZHEL4PGb8eIJ5Zv0+MRbHBzwZ8WdbJtU2CbuQjPOTmBUxxQ4Bou9K7VfhEqsnp8uSgu/yFFwNU5h9lAEAAAAAGbD5ZX3QnDH6F/9ulyfJcL5s0o5f8JQBh5Nvd0uTWgYVd1lQ3ENcJWRpLEsKOSVRWgkAAAAA6E5BVTEh21qEzktN+2tenhTWpkWlTay5bsjxiW9j7TSBalAOe9I9x30YlTLlEVr4vEGbn7d53LqCBgAAAADQiQLngWErLHz/HPK41TSz7uDYy5P8j0+0T0wm4vXpdrNeV6zWipm0V3ees3Ii/2VJ4a0Hv6Fbh2Ub4gAAAAAAukvQHNPzy0dk+kv/ySedL0/yG4Pxca5Wwdg+5142QYxfWJfSLsbxblud8rKkkO7NysW8hv/sGxphDAAAAAB0Fy9gPhgyl2x5KO42GEnmxQ4DnbT2iYm8fDcdhQcxvp34pipOBhOf66QsCdN1cyZjNjk379ceAAAAAJCf5nmj/9wycNNeozaj+vbZSsM6tPE/PjpuCDkg8T4xMRjkKGW/Bx307P74ltzCpA/XJVTN7dosS1LwG7QlVzFJJwlgAAAAAKA7mQQrQUFIysuTbAMOp7exzjvbMJPhHjHpBwfB3z+TpUZpL0syebOb/dC0BjcAAAAAgO7jNf1XIXNXg2MyW57kYCIbq6LFJvRx0aa/4m3Wm3ij3vZalmS014vJDxIAAAAAoAv4hC8+f/R7MN3lSX7PxA1eYsx1Ay+jePPm5EFM7heVc/8JlyWFHxO0jCnv1xwAAAAAkDejTXszW55UX3Hjds6aaJ+Y0HaDqoLSsK9hyyDGTSqV1h2TshEn0bNdlhTUvN/SJQAAAABA1zBeMZFkeZLRINypZQR+81yT68qQg5CpLKmUVuOpsdqoN7BGqu45T+72hzFfluT/56bHqIABAAAAAPhytTwp6JyQg4uwT0ybKsAeMQYvvskhUcekuMOtdZlW4JDiLEvq3jcvAAAAAHQ7o3likhUXRttx+JzvTc6Usw5eIsMBx+3ZK0AQ41LGoYTRvX8blQAAIABJREFUmylGaRXLkgAAAAAAQUyWJxn8sj9wrho437QvQIjPRUVGTiLGVawgxvqOSVm/6KZJXlSa6PuH1sci+yKQAQAAAIDuEucX+40HeJHzUpOGUpyP+mVGhjuU+D9elInzxDhSCGKKEJi4YlFCZRrQTH4VWSXT9GwXrKH76Ec/qlWrVmnt2rUt//vyl7+c9/A6xtDQkObOnZv3MLrWd7/7Xa1du1YPPfSQzjrrrLyH02Du3LkaGhrKexhWvvzlL2vt2rVatWqVPvrRjzprd8mSJfrmN7+pFStWaM2aNbW/i1z3AwAAEFv97/AjlyeZhCYhgUwWVTD1G/bG6sPFOOK2YXdesiAm9VQpzReh7pvs1a14s7yjU21/mKA+bKtarH+AOjucgTtLlizRFVdcoWXLlukd73hH3sNBgZx11lm66aabdOONN2rx4sV5Dyd3Cxcu1Be+8AW96lWv0vDwsEol/z3tAQAA8hcxH4y1TUbw/NZ6/hu4T0zSfWPaex7ca36omwu1u3W1bwMmDzV+U33vgpSQ7Sqq5jEZndhdy5J+/OMf69FHH1VPT4+kieDgnHPOUV9fX84j6wznnHOOXv/612tsbCzvoaBgLrjgAi1cuFDr16/PeyiF8K53vUuLFi2SJK1atUrf/va3tXnzZknS+Pi4/vznP+c5PAAA0O08SSVPjTdArv+zJ3mluqebj216zLe9kMeDmmxTnufZ/+LN86QEv6zzD2JcVbrELn2yO8TywJiiEruwMiq/x1vKYAKf7oZlSZK0cuVKrVy5svbn+fPn5zgaAN3qiCOOULlc1ujoqL72ta/phhtuyHtIAAAA/urzFE8qWQQ0/llCUMIS8nhD6ONa3MQn6ryI51MOmoq1Wa+VrIIJg31fLCtgwu+kzbIkAMjTgQceKEnavn27nnzyyZxHAwAA0MxyXuhqedLex/17S2Fu6jcE39Uw7TcvLk4QY33HpLTHELX0x+A+6pGPxQ1ZOm9ZEgAAAADAhsNf4psu7Ahsv/nxpPvEmD5mcViiwMbpBLxUnCDGGZsXyNv7/y1fVOs3Y/M55j8E0cuS8k9kzjrrLD300EN67LHHdPHFF+tnP/uZVq9erdWrV+tnP/uZTjrpJH3kIx/Rgw8+qDVr1ujRRx/VNddck9rdWRYuXKhPfvKTuvXWW/XQQw/V7niyZs0aPfjgg/rOd76jV7ziFUbtXHHFFfrTn/6kNWvWaM2aNfrTn/6kr371qxoaGtKtt96qtWvX6tZbbw1sY2hoSOeff75uueUWPfbYY7VxrFixQjfeeGPoOCbvrrN8+XK97GUv09KlS3XzzTfr8ccf19q1a/X444/r5ptv1tKlS33Pn7ybzOT/Jo/r6+vThz70oZY7U0Xdxef973+/brnlFq1cubJ2zurVq/XHP/5RN954o97+9rdHvqZxTb7HnnjiCX3uc5/TSSedVNtTaPK1uOuuu3T++ecHtmFyd536O3eF3alrcuPjP/7xj1q9enXt9Vi5cqXuuOMOffnLX9bChQuNrs32++rC5Ht38n+TYz3ooIN0/fXXt7w3ot7jF110ke66666W9/h//dd/Gf2sufSKV7yi4b2xevXqyPeGzevBXZMAAEDhtGYeZgfL4W2sXbG8eU6hhVyLxWa9WTOrQwreqNfvgKh9XmKMyejxfc+H37bapEQsqs/89Pb26pxzztHw8HDtsb/6q7/Spz/9aR166KGaMWOGJKm/v1+vetWr9PGPf1yf/OQnnY/j61//uu8kuFQqaebMmTr11FN1/PHH65prrtHnP/953zZOO+00feYzn2nZp2bGjBk666yzdPjhh2v69Omh41i4cKEuvfRSLV68uGHzp1KppOHhYR1//PG6+uqrdeWVV4ZO+nt7e/Xa175Wb33rWzV16tSGx5///Ofr4osvVl9fn6677rrQ8SRxxRVX6G//9m9rGylP6unp0X777afjjz9ehx12mJ544gktW7YstXGUy2Xtv//++o//+I+GW3D39vZq3rx5+pd/+RctXLhQH/nIR1Ibwxve8AZ96lOf0kEHHdTy3NSpU3X44Yfr8MMPlyR97GMfC23rpJNO0hvf+Mbcvq9JRb3HX/7yl+uYY47RlVdeqa9+9aupj+fQQw/Vu971Ls2cObP2WE9Pj+bNm6f/8T/+h4aGhvSlL30p9XEAAACkr3lvlqa9YJr3iak/NnL/k6B9X0L2g/EUvLFvpoowhmiOg5gE5UOF7jeq7Mr08ZBjIkMWz//pAuUx5fJEgdVll12mbdu26b3vfa8OPPBAvfCFL9T27dt12WWXSZq4I8nw8LCWLFmS2lgqlYqeeOIJLV++XPfcc48qlYoGBgb06le/WqeccoqmTp2qc889V08++WTLRHdoaEgXXnhhLYTZtGmTfvjDH2rFihU6+uij9eY3v1kveclLQu8AtmDBAl122WU6+uij5Xmenn76ad10001asWKFBgYG9MpXvlKnnHKKBgYG9O53v1vr168PnHDPmDFDb37zm7Vr1y795Cc/0V133aV58+bprW99q+bNm6fp06frTW96U8v53/72t/Xb3/629ufTTz+9dtek7373u7rvvvsajh8bG9Py5ctb+r/gggt0+umnq6enRzt27NCdd96p22+/XTt27NCsWbN08skn64QTTgj/hjh0xhlnqKenRytWrNAPfvADbdu2TaeffrpOO+009ff36w1veIPWrl2rSy+91HnfQ0ND+uAHP6iDDjpInudp1apV+uUvf6mHH35YknTMMcfo5JNP1oIFCyLb6u/v1+te9zrr76sL//Zv/9YQVnzoQx/S/PnztXHjRl122WXaunVrw/FbtmzxbecTn/hELYTZvn27fvGLX2jZsmWaNWuWzj77bL3gBS/Q0NCQ3vve9+rpp59OddPbUqmk17zmNerp6dHPf/5z3XrrrZo+fbre8pa36PnPf776+/v12te+Vj/4wQ+0atWqhnNtXg/umgQAAPIXEbokfi7ssYnHPZVC4o7JwMZVKNIe4YrNOA2DGNNdciJasT0nt5AhunImKH8JbdPkuchlSQVNYfZ68MEH9cUvflGS9KIXvUhnnnmmJOm2226rPb5kyRKdfPLJOuCAA/Syl73MeQXF5CSsOWiQpOuuu04XXXSRPvCBD2h4eFivfe1rWya673rXu/TiF79YkrRu3TpddNFFuu222yRJN954o5YvX67Pf/7zmj17duAY/v7v/16LFi2S53m688479f73v18jIyMN4zj33HP1iU98InLC3dfXp507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Se95z3t0/PHH6/DDD9dXvvIVff/7369N9rds2aJbbrml4Zzf/e53WrhwoQYGBvTRj35UL3rRi7Rs2TINDAzo1a9+tU455RT19/erWq2qXC77Vod885vf1Ktf/Wodd9xxmjt3ri699FL98Ic/1IoVK3T00Ufr7LPP1vDwsHbt2hVYFfPNb35Txx9/vF7wghdo/vz5+trXvqa77rpLt99+u3bs2KG5c+fq5S9/uV784hdreHg4kw1u//KXv2h0dFQzZ87UCSecoKuvvlo333xz7TbcY2NjWr58ecuSnpNOOknnnnuu1q1bp/vvv1/33nuvNm/erFmzZumMM87QkiVL1NPTo9HRUf36179O/Tqq1apOPvlk3XjjjfrBD36gbdu21QKzvr4+7d69Wz/5yU+0atWqhvMmK5WOOOIIHX744br66qv1/e9/Xxs3bqydX61WValUApcnHXroofqHf/gHvfvd79ZDDz2k+++/Xw8++KAk6dhjj9Xf/u3f1pbHPfLII7rpppvSfTEceeyxx3TyySerr69P5557rqZNm6YVK1bUnvf7WfvRj36kM888U6effrqmT5+uT3ziEzrmmGO0bNkyzZo1S2effbZe8IIXqFQqaevWrfre976X9WUBAAB0sLA9UxLuBWNyitMtW2wba//9YjILYjxnkVVIO87DkaAKF9dLmYJOCqiYafi6swOZ733ve1q4cKH2228/HXPMMTrmmGNqz61cubJlcnjNNddo0aJFOuGEEzQ8PKy3vOUtestb3tJwzKZNm3T//ffr9NNP15QpUzRv3ryG50dGRvSf//mf+sxnPqP58+dr9uzZev/73197fnx8XLfffrte+MIXBm5SunLlSl1wwQW65JJLdMwxx2hoaEivec1r9JrXvMb3+MmlIWm66aab9OpXv1p/93d/p76+Pv3N3/yN/uZv/qb2/MjIiD75yU/6bi5cKpV08MEH6+CDD9brXve6lud37dql733ve/rWt76V6jVI0sMPP6y5c+fq6KOP1qc+9amG58bHx/XTn/5Ul156act5q1at0k9+8hOdf/756u/v14IFC3TRRRfVnt+2bZu+/e1v67zzzovc12fatGlasmSJlixZ0vKc53lauXKlLrnkkphXmL364HDWrFkN73fJ/2dNkj7/+c/rgAMO0OLFiwN/3kZGRvSNb3xDN9xwQ6rXAAAA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)" - ], - "metadata": { - "id": "NtuBFDHGzuG_" - } - }, - { - "cell_type": "markdown", - "source": [ + "\n", "And we define 4 parameters:\n", "\n", "1. `--run-id`: the name of the training run id.\n", @@ -489,12 +504,27 @@ "If the repo does not exist **it will be created automatically**\n", "4. `--commit-message`: since HF repos are git repository you need to define a commit message.\n", "\n", - "\"Push" + "\"Push\n", + "\n", + "For instance:\n", + "\n", + "`!mlagents-push-to-hf --run-id=\"SnowballTarget1\" --local-dir=\"./results/SnowballTarget1\" --repo-id=\"ThomasSimonini/ppo-SnowballTarget\" --commit-message=\"First Push\"`" ], "metadata": { "id": "KK4fPfnczunT" } }, + { + "cell_type": "code", + "source": [ + "!mlagents-push-to-hf --run-id=\"SnowballTarget1\" --local-dir=\"./results/SnowballTarget1\" --repo-id=\"ThomasSimonini/ppo-SnowballTarget\" --commit-message=\"First Push\"" + ], + "metadata": { + "id": "kj6cZIAV7WhO" + }, + "execution_count": null, + "outputs": [] + }, { "cell_type": "code", "execution_count": null, @@ -624,6 +654,15 @@ "![image.png](data:image/png;base64,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)" ] }, + { + "cell_type": "markdown", + "source": [ + "Unzip it" + ], + "metadata": { + "id": "iWUUcs0_794U" + } + }, { "cell_type": "code", "execution_count": null, @@ -704,7 +743,7 @@ }, "outputs": [], "source": [ - "!mlagents-learn ./config/ppo/PyramidsRND.yaml --env=./trained-envs-executables/linux/Pyramids/Pyramids --run-id=\"Pyramids Training\" --no-graphics" + "!mlagents-learn ./config/ppo/PyramidsRND.yaml --env=./training-envs-executables/linux/Pyramids/Pyramids --run-id=\"Pyramids Training\" --no-graphics" ] }, { @@ -718,6 +757,15 @@ "- Now that we trained our agent, we’re **ready to push it to the Hub to be able to visualize it playing on your browser🔥.**" ] }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "JZ53caJ99sX_" + }, + "execution_count": null, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -769,11 +817,11 @@ "\n", "For the demos to visualize your agent, the temporary link is: https://singularite.itch.io\n", "\n", - "We have: \n", - "- [Worm](https://singularite.itch.io/worm), where you teach a **worm to crawl**.\n", - "- [Walker](https://singularite.itch.io/walker): teach an agent **to walk towards a goal**.\n", + "For now we have integrated: \n", + "- [Worm](https://singularite.itch.io/worm) demo where you teach a **worm to crawl**.\n", + "- [Walker](https://singularite.itch.io/walker) demo where you teach an agent **to walk towards a goal**.\n", "\n", - "If you want new demos to be added, please open an issue: https://github.com/huggingface/deep-rl-class" + "If you want new demos to be added, please open an issue: https://github.com/huggingface/deep-rl-class 🤗" ], "metadata": { "id": "YiyF4FX-04JB" From 11f488d0c1f31a1fffd48df61a5147b05ba991b8 Mon Sep 17 00:00:00 2001 From: Thomas Simonini Date: Tue, 10 Jan 2023 10:02:33 +0100 Subject: [PATCH 26/28] Update --- notebooks/unit5/unit5.ipynb | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/notebooks/unit5/unit5.ipynb b/notebooks/unit5/unit5.ipynb index c84ad48..56b65da 100644 --- a/notebooks/unit5/unit5.ipynb +++ b/notebooks/unit5/unit5.ipynb @@ -277,15 +277,6 @@ "!wget --load-cookies /tmp/cookies.txt \"https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1YHHLjyj6gaZ3Gemx1hQgqrPgSS2ZhmB5' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\\1\\n/p')&id=1YHHLjyj6gaZ3Gemx1hQgqrPgSS2ZhmB5\" -O ./training-envs-executables/linux/SnowballTarget.zip && rm -rf /tmp/cookies.txt" ] }, - { - "cell_type": "markdown", - "metadata": { - "id": "5yIV74OPOa1i" - }, - "source": [ - "**OR** Download directly to local machine and then drag and drop the file from local machine to `./training-envs-executables/linux`" - ] - }, { "cell_type": "markdown", "source": [ @@ -514,17 +505,6 @@ "id": "KK4fPfnczunT" } }, - { - "cell_type": "code", - "source": [ - "!mlagents-push-to-hf --run-id=\"SnowballTarget1\" --local-dir=\"./results/SnowballTarget1\" --repo-id=\"ThomasSimonini/ppo-SnowballTarget\" --commit-message=\"First Push\"" - ], - "metadata": { - "id": "kj6cZIAV7WhO" - }, - "execution_count": null, - "outputs": [] - }, { "cell_type": "code", "execution_count": null, @@ -815,7 +795,7 @@ "source": [ "You have the full list of the one currently available on Hugging Face here 👉 https://github.com/huggingface/ml-agents#the-environments\n", "\n", - "For the demos to visualize your agent, the temporary link is: https://singularite.itch.io\n", + "For the demos to visualize your agent, the temporary link is: https://singularite.itch.io (temporary because we'll also put the demos on Hugging Face Space)\n", "\n", "For now we have integrated: \n", "- [Worm](https://singularite.itch.io/worm) demo where you teach a **worm to crawl**.\n", From 08a92b2e09bdb862307be1823b527e167afd7e01 Mon Sep 17 00:00:00 2001 From: simoninithomas Date: Tue, 10 Jan 2023 10:11:49 +0100 Subject: [PATCH 27/28] Add notebook --- units/en/unit5/hands-on.mdx | 367 ++++++++++++++++++++++++++++++++++++ 1 file changed, 367 insertions(+) diff --git a/units/en/unit5/hands-on.mdx b/units/en/unit5/hands-on.mdx index c306385..0a855cf 100644 --- a/units/en/unit5/hands-on.mdx +++ b/units/en/unit5/hands-on.mdx @@ -27,3 +27,370 @@ For more information about the certification process, check this section 👉 ht **To start the hands-on click on Open In Colab button** 👇 : [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/deep-rl-class/blob/master/notebooks/unit5/unit5.ipynb) + +Open In Colab + +# Unit 5: An Introduction to ML-Agents + + + +Thumbnail + +In this notebook, you'll learn about ML-Agents and train two agents. + +- The first one will learn to **shoot snowballs onto spawning targets**. +- The second need to press a button to spawn a pyramid, then navigate to the pyramid, knock it over, **and move to the gold brick at the top**. To do that, it will need to explore its environment, and we will use a technique called curiosity. + +After that, you'll be able **to watch your agents playing directly on your browser**. + +For more information about the certification process, check this section 👉 https://huggingface.co/deep-rl-course/en/unit0/introduction#certification-process + +⬇️ Here is an example of what **you will achieve at the end of this unit.** ⬇️ + + +Pyramids + +SnowballTarget + +### 🎮 Environments: + +- [Pyramids](https://github.com/Unity-Technologies/ml-agents/blob/main/docs/Learning-Environment-Examples.md#pyramids) +- SnowballTarget + +### 📚 RL-Library: + +- [ML-Agents (HuggingFace Experimental Version)](https://github.com/huggingface/ml-agents) + +⚠ We're going to use an experimental version of ML-Agents were you can push to hub and load from hub Unity ML-Agents Models **you need to install the same version** + +We're constantly trying to improve our tutorials, so **if you find some issues in this notebook**, please [open an issue on the GitHub Repo](https://github.com/huggingface/deep-rl-class/issues). + +## Objectives of this notebook 🏆 + +At the end of the notebook, you will: + +- Understand how works **ML-Agents**, the environment library. +- Be able to **train agents in Unity Environments**. + +## Prerequisites 🏗️ +Before diving into the notebook, you need to: + +🔲 📚 **Study [what is ML-Agents and how it works by reading Unit 5](https://huggingface.co/deep-rl-course/unit5/introduction)** 🤗 + +# Let's train our agents 🚀 + +The ML-Agents integration on the Hub is **still experimental**, some features will be added in the future. + +But for now, **to validate this hands-on for the certification process, you just need to push your trained models to the Hub**. There’s no results to attain to validate this one. But if you want to get nice results you can try to attain: + +- For `Pyramids` : Mean Reward = 1.75 +- For `SnowballTarget` : Mean Reward = 15 or 30 targets hit in an episode. + + +## Set the GPU 💪 + +- To **accelerate the agent's training, we'll use a GPU**. To do that, go to `Runtime > Change Runtime type` + +GPU Step 1 + +- `Hardware Accelerator > GPU` + +GPU Step 2 + +## Clone the repository and install the dependencies 🔽 +- We need to clone the repository, that **contains the experimental version of the library that allows you to push your trained agent to the Hub.** + +```python +%%capture +# Clone the repository +!git clone --depth 1 https://github.com/huggingface/ml-agents/ +``` + +```python +%%capture +# Go inside the repository and install the package +%cd ml-agents +!pip3 install -e ./ml-agents-envs +!pip3 install -e ./ml-agents +``` + +## SnowballTarget ⛄ + +If you need a refresher on how this environments work check this section 👉 +https://huggingface.co/deep-rl-course/unit5/snowball-target + +### Download and move the environment zip file in `./training-envs-executables/linux/` +- Our environment executable is in a zip file. +- We need to download it and place it to `./training-envs-executables/linux/` +- We use a linux executable because we use colab, and colab machines OS is Ubuntu (linux) + +```python +# Here, we create training-envs-executables and linux +!mkdir ./training-envs-executables +!mkdir ./training-envs-executables/linux +``` + +Download the file SnowballTarget.zip from https://drive.google.com/file/d/1YHHLjyj6gaZ3Gemx1hQgqrPgSS2ZhmB5 using `wget`. + +Check out the full solution to download large files from GDrive [here](https://bcrf.biochem.wisc.edu/2021/02/05/download-google-drive-files-using-wget/) + +```python +!wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1YHHLjyj6gaZ3Gemx1hQgqrPgSS2ZhmB5' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=1YHHLjyj6gaZ3Gemx1hQgqrPgSS2ZhmB5" -O ./training-envs-executables/linux/SnowballTarget.zip && rm -rf /tmp/cookies.txt +``` + +We unzip the executable.zip file + +```python +%%capture +!unzip -d ./training-envs-executables/linux/ ./training-envs-executables/linux/SnowballTarget.zip +``` + +Make sure your file is accessible + +```python +!chmod -R 755 ./training-envs-executables/linux/SnowballTarget +``` + +### Define the SnowballTarget config file +- In ML-Agents, you define the **training hyperparameters into config.yaml files.** + +There are multiple hyperparameters. To know them better, you should check for each explanation with [the documentation](https://github.com/Unity-Technologies/ml-agents/blob/release_20_docs/docs/Training-Configuration-File.md) + + +So you need to create a `SnowballTarget.yaml` config file in ./content/ml-agents/config/ppo/ + +We'll give you here a first version of this config (to copy and paste into your `SnowballTarget.yaml file`), **but you should modify it**. + +``` +behaviors: + SnowballTarget: + trainer_type: ppo + summary_freq: 10000 + keep_checkpoints: 10 + checkpoint_interval: 50000 + max_steps: 200000 + time_horizon: 64 + threaded: true + hyperparameters: + learning_rate: 0.0003 + learning_rate_schedule: linear + batch_size: 128 + buffer_size: 2048 + beta: 0.005 + epsilon: 0.2 + lambd: 0.95 + num_epoch: 3 + network_settings: + normalize: false + hidden_units: 256 + num_layers: 2 + vis_encode_type: simple + reward_signals: + extrinsic: + gamma: 0.99 + strength: 1.0 +``` + +Config SnowballTarget +Config SnowballTarget + +As an experimentation, you should also try to modify some other hyperparameters. Unity provides very [good documentation explaining each of them here](https://github.com/Unity-Technologies/ml-agents/blob/main/docs/Training-Configuration-File.md). + +Now that you've created the config file and understand what most hyperparameters do, we're ready to train our agent 🔥. + +### Train the agent + +To train our agent, we just need to **launch mlagents-learn and select the executable containing the environment.** + +We define four parameters: + +1. `mlagents-learn `: the path where the hyperparameter config file is. +2. `--env`: where the environment executable is. +3. `--run_id`: the name you want to give to your training run id. +4. `--no-graphics`: to not launch the visualization during the training. + +MlAgents learn + +Train the model and use the `--resume` flag to continue training in case of interruption. + +> It will fail first time if and when you use `--resume`, try running the block again to bypass the error. + + + +The training will take 10 to 35min depending on your config, go take a ☕️you deserve it 🤗. + +```python +!mlagents-learn ./config/ppo/SnowballTarget.yaml --env=./training-envs-executables/linux/SnowballTarget/SnowballTarget --run-id="SnowballTarget1" --no-graphics +``` + +### Push the agent to the 🤗 Hub + +- Now that we trained our agent, we’re **ready to push it to the Hub to be able to visualize it playing on your browser🔥.** + +To be able to share your model with the community there are three more steps to follow: + +1️⃣ (If it's not already done) create an account to HF ➡ https://huggingface.co/join + +2️⃣ Sign in and then, you need to store your authentication token from the Hugging Face website. +- Create a new token (https://huggingface.co/settings/tokens) **with write role** + +Create HF Token + +- Copy the token +- Run the cell below and paste the token + +```python +from huggingface_hub import notebook_login + +notebook_login() +``` + +If you don't want to use a Google Colab or a Jupyter Notebook, you need to use this command instead: `huggingface-cli login` + +Then, we simply need to run `mlagents-push-to-hf`. + +And we define 4 parameters: + +1. `--run-id`: the name of the training run id. +2. `--local-dir`: where the agent was saved, it’s results/, so in my case results/First Training. +3. `--repo-id`: the name of the Hugging Face repo you want to create or update. It’s always / +If the repo does not exist **it will be created automatically** +4. `--commit-message`: since HF repos are git repository you need to define a commit message. + +Push to Hub + +For instance: + +`!mlagents-push-to-hf --run-id="SnowballTarget1" --local-dir="./results/SnowballTarget1" --repo-id="ThomasSimonini/ppo-SnowballTarget" --commit-message="First Push"` + +```python +!mlagents-push-to-hf --run-id= # Add your run id --local-dir= # Your local dir --repo-id= # Your repo id --commit-message= # Your commit message +``` + +Else, if everything worked you should have this at the end of the process(but with a different url 😆) : + + + +``` +Your model is pushed to the hub. You can view your model here: https://huggingface.co/ThomasSimonini/ppo-SnowballTarget +``` + +It’s the link to your model, it contains a model card that explains how to use it, your Tensorboard and your config file. **What’s awesome is that it’s a git repository, that means you can have different commits, update your repository with a new push etc.** + +But now comes the best: **being able to visualize your agent online 👀.** + +### Watch your agent playing 👀 + +For this step it’s simple: + +1. Remember your repo-id + +2. Go here: https://singularite.itch.io/snowballtarget + +3. Launch the game and put it in full screen by clicking on the bottom right button + +Snowballtarget load + +1. In step 1, choose your model repository which is the model id (in my case ThomasSimonini/ppo-SnowballTarget). + +2. In step 2, **choose what model you want to replay**: + - I have multiple one, since we saved a model every 500000 timesteps. + - But if I want the more recent I choose `SnowballTarget.onnx` + +👉 What’s nice **is to try with different models step to see the improvement of the agent.** + +And don't hesitate to share the best score your agent gets on discord in #rl-i-made-this channel 🔥 + +Let's now try a harder environment called Pyramids... + +## Pyramids 🏆 + +### Download and move the environment zip file in `./training-envs-executables/linux/` +- Our environment executable is in a zip file. +- We need to download it and place it to `./training-envs-executables/linux/` +- We use a linux executable because we use colab, and colab machines OS is Ubuntu (linux) + +Download the file Pyramids.zip from https://drive.google.com/uc?export=download&id=1UiFNdKlsH0NTu32xV-giYUEVKV4-vc7H using `wget`. Check out the full solution to download large files from GDrive [here](https://bcrf.biochem.wisc.edu/2021/02/05/download-google-drive-files-using-wget/) + +```python +!wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1UiFNdKlsH0NTu32xV-giYUEVKV4-vc7H' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=1UiFNdKlsH0NTu32xV-giYUEVKV4-vc7H" -O ./training-envs-executables/linux/Pyramids.zip && rm -rf /tmp/cookies.txt +``` + +Unzip it + +```python +%%capture +!unzip -d ./training-envs-executables/linux/ ./training-envs-executables/linux/Pyramids.zip +``` + +Make sure your file is accessible + +```python +!chmod -R 755 ./training-envs-executables/linux/Pyramids/Pyramids +``` + +### Modify the PyramidsRND config file +- Contrary to the first environment which was a custom one, **Pyramids was made by the Unity team**. +- So the PyramidsRND config file already exists and is in ./content/ml-agents/config/ppo/PyramidsRND.yaml +- You might asked why "RND" in PyramidsRND. RND stands for *random network distillation* it's a way to generate curiosity rewards. If you want to know more on that we wrote an article explaning this technique: https://medium.com/data-from-the-trenches/curiosity-driven-learning-through-random-network-distillation-488ffd8e5938 + +For this training, we’ll modify one thing: +- The total training steps hyperparameter is too high since we can hit the benchmark (mean reward = 1.75) in only 1M training steps. +👉 To do that, we go to config/ppo/PyramidsRND.yaml,**and modify these to max_steps to 1000000.** + +Pyramids config + +As an experimentation, you should also try to modify some other hyperparameters, Unity provides a very [good documentation explaining each of them here](https://github.com/Unity-Technologies/ml-agents/blob/main/docs/Training-Configuration-File.md). + +We’re now ready to train our agent 🔥. + +### Train the agent + +The training will take 30 to 45min depending on your machine, go take a ☕️you deserve it 🤗. + +```python +!mlagents-learn ./config/ppo/PyramidsRND.yaml --env=./training-envs-executables/linux/Pyramids/Pyramids --run-id="Pyramids Training" --no-graphics +``` + +### Push the agent to the 🤗 Hub + +- Now that we trained our agent, we’re **ready to push it to the Hub to be able to visualize it playing on your browser🔥.** + +```python + +``` + +```python +!mlagents-push-to-hf --run-id= # Add your run id --local-dir= # Your local dir --repo-id= # Your repo id --commit-message= # Your commit message +``` + +### Watch your agent playing 👀 + +The temporary link for Pyramids demo is: https://singularite.itch.io/pyramids + +### 🎁 Bonus: Why not train on another environment? +Now that you know how to train an agent using MLAgents, **why not try another environment?** + +MLAgents provides 18 different and we’re building some custom ones. The best way to learn is to try things of your own, have fun. + + + +![cover](https://miro.medium.com/max/1400/0*xERdThTRRM2k_U9f.png) + +You have the full list of the one currently available on Hugging Face here 👉 https://github.com/huggingface/ml-agents#the-environments + +For the demos to visualize your agent, the temporary link is: https://singularite.itch.io (temporary because we'll also put the demos on Hugging Face Space) + +For now we have integrated: +- [Worm](https://singularite.itch.io/worm) demo where you teach a **worm to crawl**. +- [Walker](https://singularite.itch.io/walker) demo where you teach an agent **to walk towards a goal**. + +If you want new demos to be added, please open an issue: https://github.com/huggingface/deep-rl-class 🤗 + +That’s all for today. Congrats on finishing this tutorial! + +The best way to learn is to practice and try stuff. Why not try another environment? ML-Agents has 18 different environments, but you can also create your own? Check the documentation and have fun! + +See you on Unit 6 🔥, + +## Keep Learning, Stay awesome 🤗 From 368a1823b6ba4e932224600054959bc93ab83165 Mon Sep 17 00:00:00 2001 From: simoninithomas Date: Tue, 10 Jan 2023 10:19:05 +0100 Subject: [PATCH 28/28] Update hands on --- units/en/unit5/hands-on.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/units/en/unit5/hands-on.mdx b/units/en/unit5/hands-on.mdx index 0a855cf..0ca0c22 100644 --- a/units/en/unit5/hands-on.mdx +++ b/units/en/unit5/hands-on.mdx @@ -28,8 +28,6 @@ For more information about the certification process, check this section 👉 ht [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/huggingface/deep-rl-class/blob/master/notebooks/unit5/unit5.ipynb) -Open In Colab - # Unit 5: An Introduction to ML-Agents