Skip to main content

No project description provided

Project description

dat1-cli

PyPI - Version

A command line interface for the dat1 platform.

Installation

pip install dat1-cli

Usage

Initialize with your API key:

dat1 login

To initialize a new model project, run in the root directory of your project:

dat1 init

This will create a dat1.yaml file in the root directory of your project. This file contains the configuration for your model:

model_name: <your model name>
exclude:
  - '**/.git/**'
  - '**/.idea/**'
  - '*.md'
  - '*.jpg'
  - .dat1.yaml
  - .DS_Store

Exclude uses glob patterns to exclude files from being uploaded to the platform.

To upload your model to the platform:

dat1 deploy

A good starting point for your model is using one of the example models.

Otherwise, the platform expects a handler.py file in the root directory of your project that contains a FastAPI app with two endpoints: GET / for healthchecks and POST /infer for inference. An example handler is shown below:

from fastapi import Request, FastAPI
from vllm import LLM, SamplingParams
import os

# Model initialization Code
# This code should be placed before the FastAPI app is initialized

llm = LLM(model=os.path.expanduser('./'), load_format="safetensors", enforce_eager=True)

app = FastAPI()

@app.get("/")
async def root():
    return "OK"

@app.post("/infer")
async def infer(request: Request):
    # Inference Code
    request = await request.json()
    prompts = request["prompt"]
    sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
    outputs = llm.generate(prompts, sampling_params)
    return { "response" : outputs[0].outputs[0].text }

Streaming Responses with Server-Sent Events

To stream responses to the client, you can use Server-Sent Events (SSE). To specify that the response should be streamed, you need to add response_type: sse to the model definition in the dat1.yaml file.

model_name: chat_completion
response_type: sse
exclude:
  - '**/.git/**'
  - '**/.idea/**'
  - '*.md'
  - '*.jpg'
  - .dat1.yaml

The handler code should be modified to return a generator that yields the responses:

from fastapi import Request, FastAPI
from sse_starlette.sse import EventSourceResponse
import json

app = FastAPI()

@app.get("/")
async def root():
    return "OK"

async def response_generator():
    for i in range(10):
        yield json.dumps({"response": f"Response {i}"})  

@app.post("/infer")
async def infer(request: Request):
    return EventSourceResponse(response_generator(), sep="\n")

Launching Locally

Pre-requisites

  • Docker
  • CUDA-compatible GPU
  • NVIDIA Container Toolkit

To launch your model locally, run:

dat1 serve

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dat1_cli-0.2.2.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dat1_cli-0.2.2-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file dat1_cli-0.2.2.tar.gz.

File metadata

  • Download URL: dat1_cli-0.2.2.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for dat1_cli-0.2.2.tar.gz
Algorithm Hash digest
SHA256 12375d43b3b1c417381ae6dbbb13ca8d5fada645bc3ff57f55f3d201b9b7081c
MD5 a198a50d89fea4b6d07ba33c5c691017
BLAKE2b-256 852c75b77a0e1ac7fc807a6ec9dec8e2864db9e0946e36267d10a4e6651f7ee8

See more details on using hashes here.

Provenance

The following attestation bundles were made for dat1_cli-0.2.2.tar.gz:

Publisher: publish.yml on dat1-co/dat1-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dat1_cli-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: dat1_cli-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for dat1_cli-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7d06059f3c95f5c0e57ac5fbbb25b49bda27f81673fe1e09c01aa6d64f4844da
MD5 ea2e4a38361160f9eccda9b188bba2c4
BLAKE2b-256 b3f8ad6ad9dd973e0c990c1bc3dfdd0a70e4824c6a362506ae7e933e3c29f042

See more details on using hashes here.

Provenance

The following attestation bundles were made for dat1_cli-0.2.2-py3-none-any.whl:

Publisher: publish.yml on dat1-co/dat1-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page