-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
93 lines (87 loc) · 3.25 KB
/
Copy pathpyproject.toml
File metadata and controls
93 lines (87 loc) · 3.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
[build-system]
requires = ["setuptools>=61", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "vlafactory"
version = "0.2.2"
description = "A unified open-source framework for improving Vision-Language-Action models across data, VLM training, and VLA training."
readme = "README.md"
requires-python = ">=3.10"
license = { text = "Apache-2.0" }
authors = [{ name = "VLAFactory Contributors" }]
# Core deps only. Heavy deps (torch, transformers, vllm, datasets, ...) live
# with the individual operators / stages and are expected to come from the
# user's active environment. VLAFactory does NOT manage envs for LLaMA-Factory,
# StarVLA, AutoVLA, or SimLingo — follow their upstream install docs.
dependencies = [
"pyarrow>=14.0",
"jinja2>=3.1",
"httpx>=0.27",
"numpy>=1.24",
"scikit-learn>=1.3",
"joblib>=1.3",
"tomli>=2.0; python_version < '3.11'",
"pyyaml>=6.0.3",
"rich>=13.0",
"datasets>=4.8.5",
]
[project.optional-dependencies]
dev = [
"pytest>=7",
"ruff>=0.4",
]
scene = [
"torch>=2.1.0",
"torchvision>=0.16.0",
"transformers>=4.40.0,<5.0",
"huggingface-hub>=0.23.0",
"supervision>=0.19.0",
]
# CLIP image/text embeddings for the Stage-1 selection recipe (the `clip_model`
# resource + `clip_embed` operator, e.g. configs/data/selection_example.yaml).
# openai-clip imports as `clip` and needs torch/torchvision.
# NOTE: openai-clip 1.0.1's `clip/clip.py` does `from pkg_resources import
# packaging`, which setuptools>=70 no longer re-exports — so with a modern
# setuptools `import clip` raises ImportError. Pin setuptools<70 alongside the
# extra so a verbatim `pip install -e '.[clip]'` yields an importable clip.
# (Alternative if you'd rather not pin setuptools: switch to open_clip_torch.)
clip = [
"torch>=2.1.0",
"torchvision>=0.16.0",
"setuptools<70",
"openai-clip>=1.0",
]
# Prettier 2D projections for `vlafactory eval data --viz`. Optional: without it
# the embedding visualization falls back to t-SNE (small sets) or PCA.
viz = [
"umap-learn>=0.5",
]
# Result aggregation for `vlafactory eval vlm-bench aggregate`. The benchmark
# *runner* uses the VLMEvalKit fork's own env (conda run -n vlmeval); only the
# CSV→table aggregation needs pandas here.
vlmbench = [
"pandas>=2.0",
]
# Merging a Stage-2 LoRA adapter into a full checkpoint for a `method: full`
# VLA backend (starvla/autovla/simlingo) — vla_training/checkpoint_bridge.py.
# transformers>=4.49 so vision-language bases (Qwen2.5-VL, InternVL, …) load
# under AutoModelForImageTextToText / their remote-code class rather than
# AutoModelForCausalLM. (A `method: full` Stage-2 output skips the merge and
# needs none of this.)
merge = [
"torch>=2.1.0",
"transformers>=4.49,<5.0",
"peft>=0.10",
"accelerate>=0.26",
]
[project.scripts]
vlafactory = "vlafactory.cli:main"
[tool.setuptools.packages.find]
where = ["."]
include = ["vlafactory*"]
exclude = ["tests*", "third_party*", "configs*", "docs*", "examples*"]
[tool.pytest.ini_options]
# Scope a bare `pytest` to VLAFactory's own suite. Without this, collection recurses
# into the vendored third_party/VLMEvalKit submodule and reports that fork's tests
# (which need optional deps like litellm) as failures/errors that aren't ours.
testpaths = ["tests"]