mirror of
https://github.com/mcloh/decision-models-benchmark.git
synced 2026-11-05 22:04:12 +00:00
setup models
This commit is contained in:
0
env/.gitkeep
vendored
0
env/.gitkeep
vendored
64
env/Dockerfile
vendored
Normal file
64
env/Dockerfile
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
# Imagem de um candidato do benchmark (tarefas 11–12).
|
||||
# Uma imagem por candidato: as dependências do SemIf (transformers 5.x) e do GLiNER
|
||||
# (transformers<5) não convivem. Os pesos NÃO entram na imagem: o job os baixa do bucket
|
||||
# dmb-artefatos e confere o SHA-256 contra env/artifacts-manifest.json.
|
||||
#
|
||||
# docker build -f env/Dockerfile --build-arg CANDIDATE=laya -t dmb-laya .
|
||||
#
|
||||
# syntax=docker/dockerfile:1.7
|
||||
ARG BASE_IMAGE=python:3.12-slim-bookworm@sha256:34386ef0cb081344d7ec1c103ba398e6e9f64e9ab3a1509accc92a4e24a07258
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
ARG BASE_IMAGE
|
||||
ARG CANDIDATE
|
||||
ARG TORCH_INDEX=https://download.pytorch.org/whl/cu128
|
||||
RUN test -n "${CANDIDATE}"
|
||||
|
||||
ENV PYTHONDONTWRITEBYTECODE=1 \
|
||||
PYTHONUNBUFFERED=1 \
|
||||
PIP_NO_CACHE_DIR=1 \
|
||||
PIP_DISABLE_PIP_VERSION_CHECK=1 \
|
||||
HF_HUB_OFFLINE=1 \
|
||||
TRANSFORMERS_OFFLINE=1 \
|
||||
HF_DATASETS_OFFLINE=1 \
|
||||
HF_HUB_DISABLE_TELEMETRY=1 \
|
||||
USE_TF=0 \
|
||||
DMB_CANDIDATE=${CANDIDATE} \
|
||||
DMB_BASE_IMAGE=${BASE_IMAGE} \
|
||||
DMB_MODELS_ROOT=/models \
|
||||
RIZZO_LLAMA_DIR=/opt/runtimes/llama-b11081-linux-x64-cuda
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends libgomp1 ca-certificates \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /opt/dmb
|
||||
COPY env/requirements/ env/requirements/
|
||||
RUN pip install -r env/requirements/common.txt \
|
||||
&& pip install --extra-index-url ${TORCH_INDEX} -r env/requirements/${CANDIDATE}.txt
|
||||
|
||||
# Código-fonte dos runtimes em commits fixados (mesmos tarballs do bucket).
|
||||
COPY models/src/*.tar.gz /opt/src/
|
||||
COPY models/runtimes/llama-b11081-linux-x64-cpu /opt/runtimes/llama-b11081-linux-x64-cpu
|
||||
COPY models/runtimes/llama-b11081-linux-x64-cuda /opt/runtimes/llama-b11081-linux-x64-cuda
|
||||
RUN set -e; cd /opt/src; \
|
||||
case "${CANDIDATE}" in \
|
||||
semif) tar xzf SemIf-OpenJev-*.tar.gz && pip install --no-deps ./SemIf-OpenJev ;; \
|
||||
rizzo_flow) tar xzf rizzo-flow-*.tar.gz && pip install --no-deps ./rizzo-flow ;; \
|
||||
esac; \
|
||||
if [ "${CANDIDATE}" != rizzo_flow ]; then rm -rf /opt/runtimes; fi; \
|
||||
rm -f /opt/src/*.tar.gz
|
||||
|
||||
COPY pyproject.toml ./
|
||||
COPY dmb/ dmb/
|
||||
COPY adapters/ adapters/
|
||||
COPY harness/ harness/
|
||||
COPY contracts/ contracts/
|
||||
COPY infra/oci/session.py infra/oci/session.py
|
||||
COPY config/ config/
|
||||
COPY env/artifacts-manifest.json env/artifacts-manifest.json
|
||||
|
||||
# Manifesto de versões da imagem (tarefa 12).
|
||||
RUN python -m harness.image_manifest > /opt/dmb/image-manifest.json
|
||||
|
||||
ENTRYPOINT ["python", "-m", "harness.job"]
|
||||
175
env/acquire.py
vendored
Normal file
175
env/acquire.py
vendored
Normal file
@@ -0,0 +1,175 @@
|
||||
"""Aquisição de artefatos dos candidatos (tarefas 13–16).
|
||||
|
||||
Baixa pesos, tokenizadores e licenças nas revisões fixadas, empacota o código-fonte
|
||||
dos runtimes em commits fixados, calcula SHA-256, envia tudo ao bucket `dmb-artefatos`
|
||||
e grava o manifesto em env/artifacts-manifest.json.
|
||||
|
||||
Uso: PYTHONPATH=infra/oci .venv/bin/python env/acquire.py [--skip-upload]
|
||||
"""
|
||||
import argparse
|
||||
import hashlib
|
||||
import json
|
||||
import subprocess
|
||||
import sys
|
||||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
|
||||
import oci
|
||||
from huggingface_hub import HfApi, snapshot_download
|
||||
from oci.object_storage import UploadManager
|
||||
|
||||
from session import load_config
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
LOCAL = ROOT / "models"
|
||||
MANIFEST = ROOT / "env" / "artifacts-manifest.json"
|
||||
BUCKET = "dmb-artefatos"
|
||||
LICENSE_ALLOWLIST = {"apache-2.0", "mit"}
|
||||
|
||||
HF_MODELS = [
|
||||
{"candidate": "laya", "repo": "convaiinnovations/laya-multilingual",
|
||||
"revision": "1720e3e3357cfe1e281542e223f8273b0890ca34", "allow": None},
|
||||
{"candidate": "gliner", "repo": "fastino/GLiNER2.5-multi-Decide",
|
||||
"revision": "a35a0cd3b7a0f00f2effc576f454cd48fa98aa5f", "allow": None, "ignore": ["*.png"]},
|
||||
{"candidate": "semif", "repo": "Qwen/Qwen3.5-4B",
|
||||
"revision": "851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a", "allow": None},
|
||||
{"candidate": "rizzo_flow", "repo": "rizzoaiacademy/rizzo-flow",
|
||||
"revision": "55633c8cbd2b826bd3eefdeb05310450996649df",
|
||||
"allow": ["spark-x2.5-4b-rizzo-flow-lora-q8_0.gguf", "LICENSE", "README.md", "training/history.json"],
|
||||
"expected_sha256": {"spark-x2.5-4b-rizzo-flow-lora-q8_0.gguf":
|
||||
"dbec3c89d33984772324e65a8ed56b48e958e301b856cb870a7c1b385d01691a"}},
|
||||
]
|
||||
|
||||
GIT_SOURCES = [
|
||||
{"candidate": "semif", "repo": "https://github.com/TheoLeeCJ/SemIf-OpenJev",
|
||||
"commit": "23cf1f39fc9534fe81437200959b6dfc7106e45a", "license": "mit"},
|
||||
{"candidate": "rizzo_flow", "repo": "https://github.com/Rizzo-AI-Academy/rizzo-flow",
|
||||
"commit": "b9ba007ee4d2928bbab5b1d8bfe9009c3696b6de", "license": "apache-2.0"},
|
||||
]
|
||||
|
||||
|
||||
# Runtime llama.cpp do Rizzo Flow (release b11081): arquivos oficiais baixados por
|
||||
# `rizzo download --only runtime --runtime {cpu,cuda}`, que confere o SHA-256 fixado pelo projeto.
|
||||
RUNTIME_ARCHIVES = [
|
||||
"llama-b11081-bin-ubuntu-x64.tar.gz",
|
||||
"llama-b11081-bin-ubuntu-cuda-13.4-x64.tar.gz",
|
||||
"cudart-llama-b11081-bin-ubuntu-cuda-13.4-x64.tar.gz",
|
||||
]
|
||||
|
||||
|
||||
def sha256(path: Path) -> str:
|
||||
h = hashlib.sha256()
|
||||
with path.open("rb") as f:
|
||||
for chunk in iter(lambda: f.read(1 << 22), b""):
|
||||
h.update(chunk)
|
||||
return h.hexdigest()
|
||||
|
||||
|
||||
def fetch_hf(spec: dict) -> list[dict]:
|
||||
info = HfApi().model_info(spec["repo"], revision=spec["revision"])
|
||||
lic = (info.card_data or {}).get("license") if info.card_data else None
|
||||
if (lic or "").lower() not in LICENSE_ALLOWLIST:
|
||||
sys.exit(f"licença fora da allowlist: {spec['repo']} -> {lic}")
|
||||
target = LOCAL / spec["candidate"] / spec["repo"].replace("/", "__") / spec["revision"]
|
||||
snapshot_download(spec["repo"], revision=spec["revision"], local_dir=target,
|
||||
allow_patterns=spec.get("allow"), ignore_patterns=spec.get("ignore"))
|
||||
entries = []
|
||||
for f in sorted(p for p in target.rglob("*") if p.is_file() and ".cache" not in p.parts):
|
||||
rel = f.relative_to(target).as_posix()
|
||||
digest = sha256(f)
|
||||
expected = spec.get("expected_sha256", {}).get(rel)
|
||||
if expected and expected != digest:
|
||||
sys.exit(f"SHA-256 divergente em {spec['repo']}/{rel}")
|
||||
entries.append({
|
||||
"candidate": spec["candidate"], "kind": "hf_model", "origin": f"hf://{spec['repo']}",
|
||||
"revision": spec["revision"], "license": lic, "path": rel, "sha256": digest,
|
||||
"bytes": f.stat().st_size, "local": str(f),
|
||||
"object": f"models/{spec['candidate']}/{spec['repo'].replace('/', '__')}/{spec['revision']}/{rel}",
|
||||
})
|
||||
return entries
|
||||
|
||||
|
||||
def fetch_git(spec: dict) -> list[dict]:
|
||||
name = spec["repo"].rstrip("/").split("/")[-1]
|
||||
work = LOCAL / "src" / name
|
||||
if not (work / ".git").exists():
|
||||
subprocess.run(["git", "clone", "-q", spec["repo"], str(work)], check=True)
|
||||
subprocess.run(["git", "-C", str(work), "fetch", "-q", "origin", spec["commit"]], check=False)
|
||||
subprocess.run(["git", "-C", str(work), "checkout", "-q", spec["commit"]], check=True)
|
||||
tarball = LOCAL / "src" / f"{name}-{spec['commit'][:12]}.tar.gz"
|
||||
with open(tarball, "wb") as out:
|
||||
subprocess.run(["git", "-C", str(work), "archive", "--format=tar.gz",
|
||||
f"--prefix={name}/", spec["commit"]], stdout=out, check=True)
|
||||
return [{
|
||||
"candidate": spec["candidate"], "kind": "source", "origin": spec["repo"],
|
||||
"revision": spec["commit"], "license": spec["license"], "path": tarball.name,
|
||||
"sha256": sha256(tarball), "bytes": tarball.stat().st_size, "local": str(tarball),
|
||||
"object": f"src/{spec['candidate']}/{tarball.name}",
|
||||
}]
|
||||
|
||||
|
||||
def fetch_runtimes() -> list[dict]:
|
||||
downloads = LOCAL / "runtimes" / "downloads"
|
||||
missing = [a for a in RUNTIME_ARCHIVES if not (downloads / a).is_file()]
|
||||
if missing:
|
||||
sys.exit(f"runtimes ausentes {missing}: rode `rizzo download --only runtime --runtime cpu|cuda` em models/")
|
||||
return [{
|
||||
"candidate": "rizzo_flow", "kind": "runtime", "origin": "https://github.com/ggml-org/llama.cpp/releases/tag/b11081",
|
||||
"revision": "b11081", "license": "mit", "path": name, "sha256": sha256(downloads / name),
|
||||
"bytes": (downloads / name).stat().st_size, "local": str(downloads / name),
|
||||
"object": f"runtimes/rizzo_flow/{name}",
|
||||
} for name in RUNTIME_ARCHIVES]
|
||||
|
||||
|
||||
def upload(entries: list[dict]) -> None:
|
||||
cfg = load_config()
|
||||
client = oci.object_storage.ObjectStorageClient(cfg)
|
||||
ns = client.get_namespace().data
|
||||
manager = UploadManager(client, allow_parallel_uploads=True, parallel_process_count=8)
|
||||
for e in entries:
|
||||
try:
|
||||
head = client.head_object(ns, BUCKET, e["object"])
|
||||
if head.headers.get("opc-meta-sha256") == e["sha256"]:
|
||||
print("já no bucket:", e["object"])
|
||||
continue
|
||||
except oci.exceptions.ServiceError as err:
|
||||
if err.status != 404:
|
||||
raise
|
||||
if sha256(Path(e["local"])) != e["sha256"]:
|
||||
sys.exit(f"{e['local']} mudou depois do cálculo do hash; abortando o envio")
|
||||
print(f"enviando {e['object']} ({e['bytes'] / 1e9:.2f} GB)", flush=True)
|
||||
manager.upload_file(ns, BUCKET, e["object"], e["local"],
|
||||
metadata={"sha256": e["sha256"], "revision": e["revision"]})
|
||||
|
||||
|
||||
def main():
|
||||
ap = argparse.ArgumentParser()
|
||||
ap.add_argument("--skip-upload", action="store_true")
|
||||
args = ap.parse_args()
|
||||
|
||||
entries = []
|
||||
for spec in HF_MODELS:
|
||||
print("baixando", spec["repo"], flush=True)
|
||||
entries += fetch_hf(spec)
|
||||
for spec in GIT_SOURCES:
|
||||
print("empacotando", spec["repo"], flush=True)
|
||||
entries += fetch_git(spec)
|
||||
entries += fetch_runtimes()
|
||||
if not args.skip_upload:
|
||||
upload(entries)
|
||||
|
||||
now = datetime.now(timezone.utc).isoformat(timespec="seconds")
|
||||
manifest = {
|
||||
"schema": "dmb-artifacts-v1",
|
||||
"acquired_at": now,
|
||||
"bucket": BUCKET,
|
||||
"license_allowlist": sorted(LICENSE_ALLOWLIST),
|
||||
"artifacts": [{k: v for k, v in e.items() if k != "local"} for e in entries],
|
||||
}
|
||||
MANIFEST.write_text(json.dumps(manifest, indent=2, ensure_ascii=False) + "\n")
|
||||
total = sum(e["bytes"] for e in entries)
|
||||
print(f"{len(entries)} artefatos, {total / 1e9:.2f} GB; manifesto em {MANIFEST.relative_to(ROOT)}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
440
env/artifacts-manifest.json
vendored
Normal file
440
env/artifacts-manifest.json
vendored
Normal file
@@ -0,0 +1,440 @@
|
||||
{
|
||||
"schema": "dmb-artifacts-v1",
|
||||
"acquired_at": "2026-10-07T14:45:40+00:00",
|
||||
"bucket": "dmb-artefatos",
|
||||
"license_allowlist": [
|
||||
"apache-2.0",
|
||||
"mit"
|
||||
],
|
||||
"artifacts": [
|
||||
{
|
||||
"candidate": "laya",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://convaiinnovations/laya-multilingual",
|
||||
"revision": "1720e3e3357cfe1e281542e223f8273b0890ca34",
|
||||
"license": "apache-2.0",
|
||||
"path": ".gitattributes",
|
||||
"sha256": "caf3ca02d5e883f643e939cbed54f94237f94c171797f0dfea5e25c7e33315b3",
|
||||
"bytes": 1580,
|
||||
"object": "models/laya/convaiinnovations__laya-multilingual/1720e3e3357cfe1e281542e223f8273b0890ca34/.gitattributes"
|
||||
},
|
||||
{
|
||||
"candidate": "laya",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://convaiinnovations/laya-multilingual",
|
||||
"revision": "1720e3e3357cfe1e281542e223f8273b0890ca34",
|
||||
"license": "apache-2.0",
|
||||
"path": "README.md",
|
||||
"sha256": "e85d16c3fe35fe7094ef51a7cfa81144a5cc07558e5faddcff753a8153e38a0b",
|
||||
"bytes": 9346,
|
||||
"object": "models/laya/convaiinnovations__laya-multilingual/1720e3e3357cfe1e281542e223f8273b0890ca34/README.md"
|
||||
},
|
||||
{
|
||||
"candidate": "laya",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://convaiinnovations/laya-multilingual",
|
||||
"revision": "1720e3e3357cfe1e281542e223f8273b0890ca34",
|
||||
"license": "apache-2.0",
|
||||
"path": "config.json",
|
||||
"sha256": "7add7c041b53f7091e65908553af79ab3f077946e5f2312d510ae13b17c7c134",
|
||||
"bytes": 160,
|
||||
"object": "models/laya/convaiinnovations__laya-multilingual/1720e3e3357cfe1e281542e223f8273b0890ca34/config.json"
|
||||
},
|
||||
{
|
||||
"candidate": "laya",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://convaiinnovations/laya-multilingual",
|
||||
"revision": "1720e3e3357cfe1e281542e223f8273b0890ca34",
|
||||
"license": "apache-2.0",
|
||||
"path": "encoder/config.json",
|
||||
"sha256": "83f6916d13ef0f556ac461f28308dc2bffa7ebeadee8ec9e2db5812020ea5bb4",
|
||||
"bytes": 1938,
|
||||
"object": "models/laya/convaiinnovations__laya-multilingual/1720e3e3357cfe1e281542e223f8273b0890ca34/encoder/config.json"
|
||||
},
|
||||
{
|
||||
"candidate": "laya",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://convaiinnovations/laya-multilingual",
|
||||
"revision": "1720e3e3357cfe1e281542e223f8273b0890ca34",
|
||||
"license": "apache-2.0",
|
||||
"path": "model.safetensors",
|
||||
"sha256": "9d628fd971b700382ac6f65920a86f149777b2e748e0c955fb3b19695aa8f204",
|
||||
"bytes": 643835514,
|
||||
"object": "models/laya/convaiinnovations__laya-multilingual/1720e3e3357cfe1e281542e223f8273b0890ca34/model.safetensors"
|
||||
},
|
||||
{
|
||||
"candidate": "laya",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://convaiinnovations/laya-multilingual",
|
||||
"revision": "1720e3e3357cfe1e281542e223f8273b0890ca34",
|
||||
"license": "apache-2.0",
|
||||
"path": "rl_agent_config.json",
|
||||
"sha256": "25061739243b617ad88d1219ba6f8a9c86c5881ca28df024fa2d9b3b2fcc30c6",
|
||||
"bytes": 472,
|
||||
"object": "models/laya/convaiinnovations__laya-multilingual/1720e3e3357cfe1e281542e223f8273b0890ca34/rl_agent_config.json"
|
||||
},
|
||||
{
|
||||
"candidate": "laya",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://convaiinnovations/laya-multilingual",
|
||||
"revision": "1720e3e3357cfe1e281542e223f8273b0890ca34",
|
||||
"license": "apache-2.0",
|
||||
"path": "tokenizer/tokenizer.json",
|
||||
"sha256": "609d8f4c067cd3950f88594c5a802616cea245823836ef5848ee4fc40aab5b6f",
|
||||
"bytes": 34363188,
|
||||
"object": "models/laya/convaiinnovations__laya-multilingual/1720e3e3357cfe1e281542e223f8273b0890ca34/tokenizer/tokenizer.json"
|
||||
},
|
||||
{
|
||||
"candidate": "laya",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://convaiinnovations/laya-multilingual",
|
||||
"revision": "1720e3e3357cfe1e281542e223f8273b0890ca34",
|
||||
"license": "apache-2.0",
|
||||
"path": "tokenizer/tokenizer_config.json",
|
||||
"sha256": "424b69444bf7b5809dc2cd2e36d0bd71b8055124dd24274d6db3c655d38205e7",
|
||||
"bytes": 502,
|
||||
"object": "models/laya/convaiinnovations__laya-multilingual/1720e3e3357cfe1e281542e223f8273b0890ca34/tokenizer/tokenizer_config.json"
|
||||
},
|
||||
{
|
||||
"candidate": "gliner",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://fastino/GLiNER2.5-multi-Decide",
|
||||
"revision": "a35a0cd3b7a0f00f2effc576f454cd48fa98aa5f",
|
||||
"license": "apache-2.0",
|
||||
"path": ".gitattributes",
|
||||
"sha256": "6af2fc6fb7f8b4e8d6d4ff0b968e3353767f677c9b6973e38127780ec3563842",
|
||||
"bytes": 1640,
|
||||
"object": "models/gliner/fastino__GLiNER2.5-multi-Decide/a35a0cd3b7a0f00f2effc576f454cd48fa98aa5f/.gitattributes"
|
||||
},
|
||||
{
|
||||
"candidate": "gliner",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://fastino/GLiNER2.5-multi-Decide",
|
||||
"revision": "a35a0cd3b7a0f00f2effc576f454cd48fa98aa5f",
|
||||
"license": "apache-2.0",
|
||||
"path": "README.md",
|
||||
"sha256": "989d19265d83c9a3886577b5d3851e6c58b585f15d5b2912e925655b201fc42d",
|
||||
"bytes": 17002,
|
||||
"object": "models/gliner/fastino__GLiNER2.5-multi-Decide/a35a0cd3b7a0f00f2effc576f454cd48fa98aa5f/README.md"
|
||||
},
|
||||
{
|
||||
"candidate": "gliner",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://fastino/GLiNER2.5-multi-Decide",
|
||||
"revision": "a35a0cd3b7a0f00f2effc576f454cd48fa98aa5f",
|
||||
"license": "apache-2.0",
|
||||
"path": "SKILL.md",
|
||||
"sha256": "c88242139bdbde7194b1c05bfc77cd5a9ef2d975040a15708211a09700296e32",
|
||||
"bytes": 6511,
|
||||
"object": "models/gliner/fastino__GLiNER2.5-multi-Decide/a35a0cd3b7a0f00f2effc576f454cd48fa98aa5f/SKILL.md"
|
||||
},
|
||||
{
|
||||
"candidate": "gliner",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://fastino/GLiNER2.5-multi-Decide",
|
||||
"revision": "a35a0cd3b7a0f00f2effc576f454cd48fa98aa5f",
|
||||
"license": "apache-2.0",
|
||||
"path": "config.json",
|
||||
"sha256": "be5123080c0f3f01b938bc46a5dd0d7a2e515a34f6df798dfd70ed04c277c8bf",
|
||||
"bytes": 3152,
|
||||
"object": "models/gliner/fastino__GLiNER2.5-multi-Decide/a35a0cd3b7a0f00f2effc576f454cd48fa98aa5f/config.json"
|
||||
},
|
||||
{
|
||||
"candidate": "gliner",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://fastino/GLiNER2.5-multi-Decide",
|
||||
"revision": "a35a0cd3b7a0f00f2effc576f454cd48fa98aa5f",
|
||||
"license": "apache-2.0",
|
||||
"path": "encoder_config/config.json",
|
||||
"sha256": "d0ebbcb8b458e285a39e12cc315cbaf3d1c6f631e7281e6b22dd5b4071183f83",
|
||||
"bytes": 858,
|
||||
"object": "models/gliner/fastino__GLiNER2.5-multi-Decide/a35a0cd3b7a0f00f2effc576f454cd48fa98aa5f/encoder_config/config.json"
|
||||
},
|
||||
{
|
||||
"candidate": "gliner",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://fastino/GLiNER2.5-multi-Decide",
|
||||
"revision": "a35a0cd3b7a0f00f2effc576f454cd48fa98aa5f",
|
||||
"license": "apache-2.0",
|
||||
"path": "model.safetensors",
|
||||
"sha256": "9efe0f88c99f2aa794452e9559dc60e98d60d9fa2bf1b60cf2710411b6da5b4e",
|
||||
"bytes": 1149461028,
|
||||
"object": "models/gliner/fastino__GLiNER2.5-multi-Decide/a35a0cd3b7a0f00f2effc576f454cd48fa98aa5f/model.safetensors"
|
||||
},
|
||||
{
|
||||
"candidate": "gliner",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://fastino/GLiNER2.5-multi-Decide",
|
||||
"revision": "a35a0cd3b7a0f00f2effc576f454cd48fa98aa5f",
|
||||
"license": "apache-2.0",
|
||||
"path": "tokenizer.json",
|
||||
"sha256": "c62446df87ae18ec98b133f8f84fc449a07cc89bbf8ef192a4cb5f9c53777a7a",
|
||||
"bytes": 16035853,
|
||||
"object": "models/gliner/fastino__GLiNER2.5-multi-Decide/a35a0cd3b7a0f00f2effc576f454cd48fa98aa5f/tokenizer.json"
|
||||
},
|
||||
{
|
||||
"candidate": "gliner",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://fastino/GLiNER2.5-multi-Decide",
|
||||
"revision": "a35a0cd3b7a0f00f2effc576f454cd48fa98aa5f",
|
||||
"license": "apache-2.0",
|
||||
"path": "tokenizer_config.json",
|
||||
"sha256": "fd4a31dc2f1f17e31638c5f0e783b81cdb2fbe6bddd116a8d9e5d50d78148cf1",
|
||||
"bytes": 646,
|
||||
"object": "models/gliner/fastino__GLiNER2.5-multi-Decide/a35a0cd3b7a0f00f2effc576f454cd48fa98aa5f/tokenizer_config.json"
|
||||
},
|
||||
{
|
||||
"candidate": "semif",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://Qwen/Qwen3.5-4B",
|
||||
"revision": "851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a",
|
||||
"license": "apache-2.0",
|
||||
"path": ".gitattributes",
|
||||
"sha256": "34448b82c17d60fec9b65b1f093c115ddbaadc04beb1b0140b6bfed2e012a930",
|
||||
"bytes": 1570,
|
||||
"object": "models/semif/Qwen__Qwen3.5-4B/851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a/.gitattributes"
|
||||
},
|
||||
{
|
||||
"candidate": "semif",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://Qwen/Qwen3.5-4B",
|
||||
"revision": "851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a",
|
||||
"license": "apache-2.0",
|
||||
"path": "LICENSE",
|
||||
"sha256": "bbedc3fda3305820b977265f01b8619d87570a6739de3a5582c3464840f1e57a",
|
||||
"bytes": 11544,
|
||||
"object": "models/semif/Qwen__Qwen3.5-4B/851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a/LICENSE"
|
||||
},
|
||||
{
|
||||
"candidate": "semif",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://Qwen/Qwen3.5-4B",
|
||||
"revision": "851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a",
|
||||
"license": "apache-2.0",
|
||||
"path": "README.md",
|
||||
"sha256": "1406be1b6b8fd8a6545870da516912804756593628a1d0fb0a7965211e82a7bb",
|
||||
"bytes": 77661,
|
||||
"object": "models/semif/Qwen__Qwen3.5-4B/851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a/README.md"
|
||||
},
|
||||
{
|
||||
"candidate": "semif",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://Qwen/Qwen3.5-4B",
|
||||
"revision": "851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a",
|
||||
"license": "apache-2.0",
|
||||
"path": "chat_template.jinja",
|
||||
"sha256": "a4aee8afcf2e0711942cf848899be66016f8d14a889ff9ede07bca099c28f715",
|
||||
"bytes": 7756,
|
||||
"object": "models/semif/Qwen__Qwen3.5-4B/851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a/chat_template.jinja"
|
||||
},
|
||||
{
|
||||
"candidate": "semif",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://Qwen/Qwen3.5-4B",
|
||||
"revision": "851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a",
|
||||
"license": "apache-2.0",
|
||||
"path": "config.json",
|
||||
"sha256": "ddc63e1c717afa86c865bb5e01313d89d72bb53b97ad4a8a03ba8510c0621670",
|
||||
"bytes": 3161,
|
||||
"object": "models/semif/Qwen__Qwen3.5-4B/851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a/config.json"
|
||||
},
|
||||
{
|
||||
"candidate": "semif",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://Qwen/Qwen3.5-4B",
|
||||
"revision": "851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a",
|
||||
"license": "apache-2.0",
|
||||
"path": "merges.txt",
|
||||
"sha256": "a9d356d7bdf1ef4949e3e748e95b8e10ad9d4e2e838eddc38a0a7b6b94d1db8d",
|
||||
"bytes": 3353259,
|
||||
"object": "models/semif/Qwen__Qwen3.5-4B/851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a/merges.txt"
|
||||
},
|
||||
{
|
||||
"candidate": "semif",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://Qwen/Qwen3.5-4B",
|
||||
"revision": "851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a",
|
||||
"license": "apache-2.0",
|
||||
"path": "model.safetensors-00001-of-00002.safetensors",
|
||||
"sha256": "26a93f066e1916adb13453dae5a0c707c0fbc71299ed98779571a907b8e74c61",
|
||||
"bytes": 5329398688,
|
||||
"object": "models/semif/Qwen__Qwen3.5-4B/851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a/model.safetensors-00001-of-00002.safetensors"
|
||||
},
|
||||
{
|
||||
"candidate": "semif",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://Qwen/Qwen3.5-4B",
|
||||
"revision": "851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a",
|
||||
"license": "apache-2.0",
|
||||
"path": "model.safetensors-00002-of-00002.safetensors",
|
||||
"sha256": "cb544bd9bfae93dc59b0f22b292f5933573854a7f9b97835c67060d7d910e188",
|
||||
"bytes": 3990429408,
|
||||
"object": "models/semif/Qwen__Qwen3.5-4B/851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a/model.safetensors-00002-of-00002.safetensors"
|
||||
},
|
||||
{
|
||||
"candidate": "semif",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://Qwen/Qwen3.5-4B",
|
||||
"revision": "851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a",
|
||||
"license": "apache-2.0",
|
||||
"path": "model.safetensors.index.json",
|
||||
"sha256": "cf3f798ee02ba45f9622aa8892a47369ab667d0afbf154ee7c2212de42e6302d",
|
||||
"bytes": 76196,
|
||||
"object": "models/semif/Qwen__Qwen3.5-4B/851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a/model.safetensors.index.json"
|
||||
},
|
||||
{
|
||||
"candidate": "semif",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://Qwen/Qwen3.5-4B",
|
||||
"revision": "851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a",
|
||||
"license": "apache-2.0",
|
||||
"path": "preprocessor_config.json",
|
||||
"sha256": "27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516",
|
||||
"bytes": 390,
|
||||
"object": "models/semif/Qwen__Qwen3.5-4B/851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a/preprocessor_config.json"
|
||||
},
|
||||
{
|
||||
"candidate": "semif",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://Qwen/Qwen3.5-4B",
|
||||
"revision": "851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a",
|
||||
"license": "apache-2.0",
|
||||
"path": "tokenizer.json",
|
||||
"sha256": "5f9e4d4901a92b997e463c1f46055088b6cca5ca61a6522d1b9f64c4bb81cb42",
|
||||
"bytes": 12807982,
|
||||
"object": "models/semif/Qwen__Qwen3.5-4B/851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a/tokenizer.json"
|
||||
},
|
||||
{
|
||||
"candidate": "semif",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://Qwen/Qwen3.5-4B",
|
||||
"revision": "851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a",
|
||||
"license": "apache-2.0",
|
||||
"path": "tokenizer_config.json",
|
||||
"sha256": "316230d6a809701f4db5ea8f8fc862bc3a6f3229c937c174e674ff3ca0a64ac8",
|
||||
"bytes": 16710,
|
||||
"object": "models/semif/Qwen__Qwen3.5-4B/851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a/tokenizer_config.json"
|
||||
},
|
||||
{
|
||||
"candidate": "semif",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://Qwen/Qwen3.5-4B",
|
||||
"revision": "851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a",
|
||||
"license": "apache-2.0",
|
||||
"path": "video_preprocessor_config.json",
|
||||
"sha256": "7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13",
|
||||
"bytes": 385,
|
||||
"object": "models/semif/Qwen__Qwen3.5-4B/851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a/video_preprocessor_config.json"
|
||||
},
|
||||
{
|
||||
"candidate": "semif",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://Qwen/Qwen3.5-4B",
|
||||
"revision": "851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a",
|
||||
"license": "apache-2.0",
|
||||
"path": "vocab.json",
|
||||
"sha256": "ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003",
|
||||
"bytes": 6722759,
|
||||
"object": "models/semif/Qwen__Qwen3.5-4B/851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a/vocab.json"
|
||||
},
|
||||
{
|
||||
"candidate": "rizzo_flow",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://rizzoaiacademy/rizzo-flow",
|
||||
"revision": "55633c8cbd2b826bd3eefdeb05310450996649df",
|
||||
"license": "apache-2.0",
|
||||
"path": "LICENSE",
|
||||
"sha256": "525c465ab952779d2d360a9ff36f7f49ae018a23d80302ff839a850a77784c36",
|
||||
"bytes": 11338,
|
||||
"object": "models/rizzo_flow/rizzoaiacademy__rizzo-flow/55633c8cbd2b826bd3eefdeb05310450996649df/LICENSE"
|
||||
},
|
||||
{
|
||||
"candidate": "rizzo_flow",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://rizzoaiacademy/rizzo-flow",
|
||||
"revision": "55633c8cbd2b826bd3eefdeb05310450996649df",
|
||||
"license": "apache-2.0",
|
||||
"path": "README.md",
|
||||
"sha256": "dc38bc120b71453db49bab091363c046bcbcbb59d08afbbc7d1ce355b01f2191",
|
||||
"bytes": 9315,
|
||||
"object": "models/rizzo_flow/rizzoaiacademy__rizzo-flow/55633c8cbd2b826bd3eefdeb05310450996649df/README.md"
|
||||
},
|
||||
{
|
||||
"candidate": "rizzo_flow",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://rizzoaiacademy/rizzo-flow",
|
||||
"revision": "55633c8cbd2b826bd3eefdeb05310450996649df",
|
||||
"license": "apache-2.0",
|
||||
"path": "spark-x2.5-4b-rizzo-flow-lora-q8_0.gguf",
|
||||
"sha256": "dbec3c89d33984772324e65a8ed56b48e958e301b856cb870a7c1b385d01691a",
|
||||
"bytes": 4375021216,
|
||||
"object": "models/rizzo_flow/rizzoaiacademy__rizzo-flow/55633c8cbd2b826bd3eefdeb05310450996649df/spark-x2.5-4b-rizzo-flow-lora-q8_0.gguf"
|
||||
},
|
||||
{
|
||||
"candidate": "rizzo_flow",
|
||||
"kind": "hf_model",
|
||||
"origin": "hf://rizzoaiacademy/rizzo-flow",
|
||||
"revision": "55633c8cbd2b826bd3eefdeb05310450996649df",
|
||||
"license": "apache-2.0",
|
||||
"path": "training/history.json",
|
||||
"sha256": "8feb23ded52b22b095907261659b9a9972f607c0a810cee5628b8b2cebfa227f",
|
||||
"bytes": 27088,
|
||||
"object": "models/rizzo_flow/rizzoaiacademy__rizzo-flow/55633c8cbd2b826bd3eefdeb05310450996649df/training/history.json"
|
||||
},
|
||||
{
|
||||
"candidate": "semif",
|
||||
"kind": "source",
|
||||
"origin": "https://github.com/TheoLeeCJ/SemIf-OpenJev",
|
||||
"revision": "23cf1f39fc9534fe81437200959b6dfc7106e45a",
|
||||
"license": "mit",
|
||||
"path": "SemIf-OpenJev-23cf1f39fc95.tar.gz",
|
||||
"sha256": "bb31ca475740e98b5091d2ee82b80d82568a5d19833cf612a8d28d43889073d4",
|
||||
"bytes": 8807630,
|
||||
"object": "src/semif/SemIf-OpenJev-23cf1f39fc95.tar.gz"
|
||||
},
|
||||
{
|
||||
"candidate": "rizzo_flow",
|
||||
"kind": "source",
|
||||
"origin": "https://github.com/Rizzo-AI-Academy/rizzo-flow",
|
||||
"revision": "b9ba007ee4d2928bbab5b1d8bfe9009c3696b6de",
|
||||
"license": "apache-2.0",
|
||||
"path": "rizzo-flow-b9ba007ee4d2.tar.gz",
|
||||
"sha256": "5921e70b7d9f592c649b88002f010736a8d2b0cb6de081d078e779ea1d916a62",
|
||||
"bytes": 7999256,
|
||||
"object": "src/rizzo_flow/rizzo-flow-b9ba007ee4d2.tar.gz"
|
||||
},
|
||||
{
|
||||
"candidate": "rizzo_flow",
|
||||
"kind": "runtime",
|
||||
"origin": "https://github.com/ggml-org/llama.cpp/releases/tag/b11081",
|
||||
"revision": "b11081",
|
||||
"license": "mit",
|
||||
"path": "llama-b11081-bin-ubuntu-x64.tar.gz",
|
||||
"sha256": "1e4afeb3985ff8877c3811b7fa994faf7731fb54ad90ff0b68e96fb0a5493c45",
|
||||
"bytes": 16983830,
|
||||
"object": "runtimes/rizzo_flow/llama-b11081-bin-ubuntu-x64.tar.gz"
|
||||
},
|
||||
{
|
||||
"candidate": "rizzo_flow",
|
||||
"kind": "runtime",
|
||||
"origin": "https://github.com/ggml-org/llama.cpp/releases/tag/b11081",
|
||||
"revision": "b11081",
|
||||
"license": "mit",
|
||||
"path": "llama-b11081-bin-ubuntu-cuda-13.4-x64.tar.gz",
|
||||
"sha256": "71984fb15c371a34e79b773000a712ea6a7ff228e62b6ee6313a7881897ea931",
|
||||
"bytes": 149582659,
|
||||
"object": "runtimes/rizzo_flow/llama-b11081-bin-ubuntu-cuda-13.4-x64.tar.gz"
|
||||
},
|
||||
{
|
||||
"candidate": "rizzo_flow",
|
||||
"kind": "runtime",
|
||||
"origin": "https://github.com/ggml-org/llama.cpp/releases/tag/b11081",
|
||||
"revision": "b11081",
|
||||
"license": "mit",
|
||||
"path": "cudart-llama-b11081-bin-ubuntu-cuda-13.4-x64.tar.gz",
|
||||
"sha256": "c86d7a48e65d8bda58f79a288599508c8b0e57e711118c30b8e1228faf7dc898",
|
||||
"bytes": 440231544,
|
||||
"object": "runtimes/rizzo_flow/cudart-llama-b11081-bin-ubuntu-cuda-13.4-x64.tar.gz"
|
||||
}
|
||||
]
|
||||
}
|
||||
7
env/requirements/common.txt
vendored
Normal file
7
env/requirements/common.txt
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
# Comum a todas as imagens (servidor JEV, harness, acesso ao Object Storage).
|
||||
jsonschema==4.26.0
|
||||
fastapi==0.142.2
|
||||
uvicorn==0.54.0
|
||||
pydantic==2.13.5
|
||||
pyyaml==6.0.3
|
||||
oci==2.187.2
|
||||
11
env/requirements/gliner.txt
vendored
Normal file
11
env/requirements/gliner.txt
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
torch==2.10.0
|
||||
transformers==4.57.6
|
||||
tokenizers==0.22.2
|
||||
safetensors==0.8.0
|
||||
huggingface_hub==0.36.2
|
||||
numpy==2.4.6 # última compatível com o Python 3.11 dos jobs
|
||||
peft==0.21.2
|
||||
protobuf==7.36.2
|
||||
sentencepiece==0.2.2
|
||||
tiktoken==0.14.0
|
||||
gliner2==2.0.0
|
||||
7
env/requirements/laya.txt
vendored
Normal file
7
env/requirements/laya.txt
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
torch==2.10.0
|
||||
transformers==4.57.6
|
||||
tokenizers==0.22.2
|
||||
safetensors==0.8.0
|
||||
huggingface_hub==0.36.2
|
||||
numpy==2.4.6 # última compatível com o Python 3.11 dos jobs
|
||||
laya==0.3.29
|
||||
2
env/requirements/rizzo_flow.txt
vendored
Normal file
2
env/requirements/rizzo_flow.txt
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
# Sem torch: o Rizzo Flow roda sobre o llama.cpp b11081 (runtimes copiados para a imagem).
|
||||
jinja2==3.1.6
|
||||
10
env/requirements/semif.txt
vendored
Normal file
10
env/requirements/semif.txt
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
# Versões fixadas pelo pyproject do SemIf (commit 23cf1f39fc95).
|
||||
torch==2.10.0
|
||||
transformers==5.17.0
|
||||
accelerate==1.12.0
|
||||
safetensors==0.8.0
|
||||
huggingface-hub==1.31.0
|
||||
tokenizers==0.23.2
|
||||
numpy==2.2.6
|
||||
sentencepiece==0.2.1
|
||||
protobuf==7.36.1
|
||||
Reference in New Issue
Block a user