40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
from functools import lru_cache
|
|
from pathlib import Path
|
|
from typing import Optional
|
|
|
|
import vllm.envs as envs
|
|
from vllm.connections import global_http_connection
|
|
from vllm.envs import VLLM_IMAGE_FETCH_TIMEOUT
|
|
|
|
vLLM_S3_BUCKET_URL = "https://vllm-public-assets.s3.us-west-2.amazonaws.com"
|
|
|
|
|
|
def get_cache_dir() -> Path:
|
|
"""Get the path to the cache for storing downloaded assets."""
|
|
path = Path(envs.VLLM_ASSETS_CACHE)
|
|
path.mkdir(parents=True, exist_ok=True)
|
|
|
|
return path
|
|
|
|
|
|
@lru_cache
|
|
def get_vllm_public_assets(filename: str,
|
|
s3_prefix: Optional[str] = None) -> Path:
|
|
"""
|
|
Download an asset file from ``s3://vllm-public-assets``
|
|
and return the path to the downloaded file.
|
|
"""
|
|
asset_directory = get_cache_dir() / "vllm_public_assets"
|
|
asset_directory.mkdir(parents=True, exist_ok=True)
|
|
|
|
asset_path = asset_directory / filename
|
|
if not asset_path.exists():
|
|
if s3_prefix is not None:
|
|
filename = s3_prefix + "/" + filename
|
|
global_http_connection.download_file(
|
|
f"{vLLM_S3_BUCKET_URL}/{filename}",
|
|
asset_path,
|
|
timeout=VLLM_IMAGE_FETCH_TIMEOUT)
|
|
|
|
return asset_path
|