Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/runpod/runpod-python
🐍 | Python library for RunPod API and serverless worker SDK.
https://github.com/runpod/runpod-python
api artificial-intelligence cloud-gpu gpu machine-learning runpod sdk-python serverless
Last synced: 19 days ago
JSON representation
🐍 | Python library for RunPod API and serverless worker SDK.
- Host: GitHub
- URL: https://github.com/runpod/runpod-python
- Owner: runpod
- License: mit
- Created: 2022-12-09T21:35:48.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-24T08:57:40.000Z (20 days ago)
- Last Synced: 2024-10-24T13:25:45.860Z (20 days ago)
- Topics: api, artificial-intelligence, cloud-gpu, gpu, machine-learning, runpod, sdk-python, serverless
- Language: Python
- Homepage: https://pypi.org/project/runpod/
- Size: 14.3 MB
- Stars: 177
- Watchers: 5
- Forks: 63
- Open Issues: 38
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
RunPod | Python Library
[![PyPI Package](https://badge.fury.io/py/runpod.svg)](https://badge.fury.io/py/runpod)
[![Downloads](https://static.pepy.tech/personalized-badge/runpod?period=total&units=international_system&left_color=grey&right_color=blue&left_text=Downloads)](https://pepy.tech/project/runpod)[![CI | End-to-End RunPod Python Tests](https://github.com/runpod/runpod-python/actions/workflows/CI-e2e.yml/badge.svg)](https://github.com/runpod/runpod-python/actions/workflows/CI-e2e.yml)
[![CI | Code Quality](https://github.com/runpod/runpod-python/actions/workflows/CI-pylint.yml/badge.svg)](https://github.com/runpod/runpod-python/actions/workflows/CI-pylint.yml)
[![CI | Unit Tests](https://github.com/runpod/runpod-python/actions/workflows/CI-pytests.yml/badge.svg)](https://github.com/runpod/runpod-python/actions/workflows/CI-pytests.yml)
[![CI | CodeQL](https://github.com/runpod/runpod-python/actions/workflows/CI-codeql.yml/badge.svg)](https://github.com/runpod/runpod-python/actions/workflows/CI-codeql.yml)Welcome to the official Python library for RunPod API & SDK.
## Table of Contents
- [Table of Contents](#table-of-contents)
- [💻 | Installation](#--installation)
- [⚡ | Serverless Worker (SDK)](#--serverless-worker-sdk)
- [Quick Start](#quick-start)
- [Local Test Worker](#local-test-worker)
- [📚 | API Language Library (GraphQL Wrapper)](#--api-language-library-graphql-wrapper)
- [Endpoints](#endpoints)
- [GPU Cloud (Pods)](#gpu-cloud-pods)
- [📁 | Directory](#--directory)
- [🤝 | Community and Contributing](#--community-and-contributing)## 💻 | Installation
```bash
# Install the latest release version
pip install runpod# or
# Install the latest development version (main branch)
pip install git+https://github.com/runpod/runpod-python.git
```*Python 3.8 or higher is required to use the latest version of this package.*
## ⚡ | Serverless Worker (SDK)
This python package can also be used to create a serverless worker that can be deployed to RunPod as a custom endpoint API.
### Quick Start
Create a python script in your project that contains your model definition and the RunPod worker start code. Run this python code as your default container start command:
```python
# my_worker.pyimport runpod
def is_even(job):
job_input = job["input"]
the_number = job_input["number"]if not isinstance(the_number, int):
return {"error": "Silly human, you need to pass an integer."}if the_number % 2 == 0:
return Truereturn False
runpod.serverless.start({"handler": is_even})
```Make sure that this file is ran when your container starts. This can be accomplished by calling it in the docker command when you set up a template at [runpod.io/console/serverless/user/templates](https://www.runpod.io/console/serverless/user/templates) or by setting it as the default command in your Dockerfile.
See our [blog post](https://www.runpod.io/blog/serverless-create-a-basic-api) for creating a basic Serverless API, or view the [details docs](https://docs.runpod.io/serverless-ai/custom-apis) for more information.
### Local Test Worker
You can also test your worker locally before deploying it to RunPod. This is useful for debugging and testing.
```bash
python my_worker.py --rp_serve_api
```## 📚 | API Language Library (GraphQL Wrapper)
When interacting with the RunPod API you can use this library to make requests to the API.
```python
import runpodrunpod.api_key = "your_runpod_api_key_found_under_settings"
```### Endpoints
You can interact with RunPod endpoints via a `run` or `run_sync` method.
```python
endpoint = runpod.Endpoint("ENDPOINT_ID")run_request = endpoint.run(
{"your_model_input_key": "your_model_input_value"}
)# Check the status of the endpoint run request
print(run_request.status())# Get the output of the endpoint run request, blocking until the endpoint run is complete.
print(run_request.output())
``````python
endpoint = runpod.Endpoint("ENDPOINT_ID")run_request = endpoint.run_sync(
{"your_model_input_key": "your_model_input_value"}
)# Returns the job results if completed within 90 seconds, otherwise, returns the job status.
print(run_request )
```### GPU Cloud (Pods)
```python
import runpodrunpod.api_key = "your_runpod_api_key_found_under_settings"
# Get all my pods
pods = runpod.get_pods()# Get a specific pod
pod = runpod.get_pod(pod.id)# Create a pod
pod = runpod.create_pod("test", "runpod/stack", "NVIDIA GeForce RTX 3070")# Stop the pod
runpod.stop_pod(pod.id)# Resume the pod
runpod.resume_pod(pod.id)# Terminate the pod
runpod.terminate_pod(pod.id)
```## 📁 | Directory
```BASH
.
├── docs # Documentation
├── examples # Examples
├── runpod # Package source code
│ ├── api_wrapper # Language library - API (GraphQL)
│ ├── cli # Command Line Interface Functions
│ ├── endpoint # Language library - Endpoints
│ └── serverless # SDK - Serverless Worker
└── tests # Package tests
```## 🤝 | Community and Contributing
We welcome both pull requests and issues on [GitHub](https://github.com/runpod/runpod-python). Bug fixes and new features are encouraged, but please read our [contributing guide](CONTRIBUTING.md) first.