Gradient Actions

Gradient Actions are composable building blocks for creating reproducible machine learning workflows. Actions use the uses and with syntax to specify how a job step executes.

container

with:
image: bash:5
args: ["echo", "hello", "world"]

In this basic example, the Gradient action called [email protected] allows us to pick an arbitrary docker container (in this case the lightweight bash container) and pass arguments directly to it.

script

with:
script: |-
echo 'hello world'
echo $RANDOM
image: bash:5

If you want to run multiple commands, the [email protected] action allows you to pass a script in a literal-style HereDoc denoted by |-. The pipe will preserve newlines and the dash will remove extra newlines after the block.

Note: The image you provide will need to have bash available in it's PATH.

git-checkout

outputs:
repo:
type: volume
with:
url: https://github.com/user/my-public-repo
ref: 46aa59d6ecc3720ffe2454a6d9d360e6ce75acce #optional git ref
path: /outputs/repo # optional, defaults to exactly one output volume or dataset

In this example, the Gradient action [email protected] clones the public GitHub URL https://github.com/user/my-public-repo at ref 46aa... into a volume named repo. The cloned files are accessible at /outputs/<output-name> (in this case, /outputs/repo), and subsequent jobs that specify a the checkout job's volume as an input can also access the as repository files as read-only at /inputs/<input-name>.

inputs:
repo: checkout-job.outputs.repo
with:
image: busybox
args: ['ls', '/inputs/repo']

Note: to clone a private repository, add your username as an action parameter, set a Gradient secret with a GitHub access token value, and add a password parameter (example below).

outputs:
repo:
type: volume
with:
url: https://github.com/user/my-private-repo
username: paperspace
password: secret:MY_SECRET_NAME

Using path to pick an output target

outputs:
repo:
type: volume
ds:
type: dataset
with:
id: d1234
with:
url: https://github.com/user/my-public-repo
ref: 46aa59d6ecc3720ffe2454a6d9d360e6ce75acce #optional git ref
path: /outputs/repo/subfolder

s3-download

outputs:
s3:
type: volume
with:
url: s3://bucket/path/
access-key: MYACCESSKEY
secret-access-key: secret:MY_SECRET_NAME

The [email protected] Gradient action copies the contents of an s3 bucket into an output (in this example, the volume is named s3). Subsequent jobs that specify an input that reference the s3-download job's volume output can access the downloaded files within that job at /inputs/<input-name>.

Note: access-key and secret-access-key are required parameters, and the latter must be a Gradient secret. Optional parameters include region (for AWS buckets), endpoint (for non-AWS buckets), and path (to disambiguate target outputs or to download to a subfolder).

model-create

inputs:
model:
type: dataset
with:
ref: dsr8k5qzn401lb5:klfoyy9 # Example dataset ref
outputs:
model-id:
type: string
uses: create-[email protected]
with:
name: my-model-name
type: Tensorflow # Tensorflow, ONNX, or Custom

In this example, the [email protected] action takes a dataset input named model and outputs a string ID (named model-id) that references a Gradient model. With this reference, the created model can be tested, edited, or deployed in future jobs.