border/lib.rs
1//! A reinforcement learning library in Rust.
2//!
3//! Border consists of the following crates:
4//!
5//! * Core and utility
6//! * [border-core](https://crates.io/crates/border-core) ([doc](https://docs.rs/border-core/latest/border_core/)) provides basic traits and functions for environments and reinforcement learning (RL) agents.
7//! * [border-tensorboard](https://crates.io/crates/border-tensorboard) ([doc](https://docs.rs/border-core/latest/border_tensorboard/)) implements the `TensorboardRecorder` struct for writing records that can be visualized in Tensorboard, based on [tensorboard-rs](https://crates.io/crates/tensorboard-rs).
8//! * [border-mlflow-tracking](https://crates.io/crates/border-mlflow-tracking) ([doc](https://docs.rs/border-core/latest/border_mlflow_tracking/)) provides MLflow tracking support for logging metrics during training via REST API.
9//! * [border-async-trainer](https://crates.io/crates/border-async-trainer) ([doc](https://docs.rs/border-core/latest/border_async_trainer/)) defines traits and functions for asynchronous training of RL agents using multiple actors. Each actor runs a sampling process in parallel, where an agent interacts with an environment to collect samples for a shared replay buffer.
10//! * [border](https://crates.io/crates/border) serves as a collection of examples.
11//! * Environment
12//! * [border-py-gym-env](https://crates.io/crates/border-py-gym-env) ([doc](https://docs.rs/border-core/latest/border_py_gym_env/)) provides a wrapper for [Gymnasium](https://gymnasium.farama.org) environments written in Python.
13//! * [border-atari-env](https://crates.io/crates/border-atari-env) ([doc](https://docs.rs/border-core/latest/border_atari_env/)) implements a wrapper for [atari-env](https://crates.io/crates/atari-env), which is part of [gym-rs](https://crates.io/crates/gym-rs).
14//! * [border-minari](https://crates.io/crates/border-minari) ([doc](https://docs.rs/border-core/latest/border_minari/)) provides a wrapper for [Minari](https://minari.farama.org).
15//! * Agent
16//! * [border-tch-agent](https://crates.io/crates/border-tch-agent) ([doc](https://docs.rs/border-core/latest/border_tch_agent/)) implements RL agents based on [tch](https://crates.io/crates/tch), including Deep Q Network (DQN), Implicit Quantile Network (IQN), and Soft Actor-Critic (SAC).
17//! * [border-candle-agent](https://crates.io/crates/border-candle-agent) ([doc](https://docs.rs/border-core/latest/border_candle_agent/)) implements RL agents based on [candle](https://crates.io/crates/candle-core).
18//! * [border-policy-no-backend](https://crates.io/crates/border-policy-no-backend) ([doc](https://docs.rs/border-core/latest/border_policy_no_backend/)) implements policies that are independent of any deep learning backend, such as Torch.
19//!
20//! ## Status
21//!
22//! Border is experimental and currently under development. The API is unstable.
23//!
24//! ## Examples
25//!
26//! Example scripts are available in the `border/examples` directory. These have been tested in Docker containers, specifically using the aarch64 configuration on an M2 MacBook Air. Some scripts require several days for the training process, as tested on an Ubuntu 22.04 virtual machine in [GPUSOROBAN](https://soroban.highreso.jp), a computing cloud.
27//!
28//! ## Docker
29//!
30//! Docker configuration files for development and testing are available in the [dev-border](https://github.com/taku-y/dev-border) repository. These files are used to set up the development environment, supporting both aarch64 (e.g., M2 MacBook Air) and amd64 architectures.
31//!
32//! ## License
33//!
34//! Crates | License
35//! --------------------------|------------------
36//! `border-core` | MIT OR Apache-2.0
37//! `border-tensorboard` | MIT OR Apache-2.0
38//! `border-mlflow-tracking` | MIT OR Apache-2.0
39//! `border-async-trainer` | MIT OR Apache-2.0
40//! `border-py-gym-env` | MIT OR Apache-2.0
41//! `border-atari-env` | GPL-2.0-or-later
42//! `border-minari` | MIT OR Apache-2.0
43//! `border-tch-agent` | MIT OR Apache-2.0
44//! `border-candle-agent` | MIT OR Apache-2.0
45//! `border-policy-no-backend`| MIT OR Apache-2.0
46//! `border` | GPL-2.0-or-later