Released July 27, 2023. Link to PyPI.
We are introducing a new primitive called
beam run is used to run one-off functions remotely, without having to deploy an API.
For example, let’s say you wanted to run some code on Beam, but you don’t want to run it in a dev session. And you don’t want to deploy it as an API. You just want to run it once, remotely, on the cloud.
You can accomplish this by adding a decorator to your function. Here’s what that will look like:
from beam import App, Runtime, Image, Output, Volume app = App( name="vocalize", runtime=Runtime( cpu=1, gpu="A10G", image=Image(python_version="python3.8", python_packages=["torch"], commands=["apt-get install ffmpeg"]), ), volumes=[Volume(name="my_models", path="models")], ) @app.run(outputs=[Output(path="audio_file.wav")]) def transcribe(): return
You can run this code remotely on Beam by running:
beam run my_file.py:transcribe
transcribe() will be executed on Beam remotely. Logs will be streamed to your terminal, and you can also view logs, outputs, and task status in the dashboard.
beam run also support the use of Outputs and Volumes.
Triggers are now decorators on functions. This supports the new syntax for
beam run, and it also makes it easy to switch between Runs, REST APIs, and Task Queues very easily.
import beam app = beam.App(...) app.Trigger.RestAPI(...)
from beam import App, Runtime your_app = App(name="your_app", runtime=Runtime()) @your_app.rest_api() def handler(): return
Volumes are mounted directly to apps. This allows you to reuse app definitions across your different projects.
import beam app = beam.App(...) app.Mount.SharedVolume(...)
from beam import App, Volume App( name="my-app", volumes=[ Volume(name="files", path="./files"), Volume(name="images", path="./images"), ], )
Outputs are now added directly to triggers. We’re doing this for composability and ease-of-use. It is easier to add an output directly to a trigger, instead of having a separate method outside the trigger.
import beam app = beam.App(...) app.Output.File(...)
from beam import App, Runtime, Output your_app = App(name="your_app", runtime=Runtime()) @your_app.task_queue(outputs=[Output(path='./test.txt')])
- We’ve removed
beam.Typesfrom deployment triggers.
Outputswill automatically infer the file type. You no longer need to specify whether the output is a
- You can use the
/taskAPI to query the status of any job running on Beam. Previously, one could only query the status of async jobs.
Webhookhas been renamed to
We’ve noticed that loaders are not currently supported in
beam run. This
will be fixed in a future SDK update.
Was this page helpful?