caption-flow 0.2.2__py3-none-any.whl → 0.2.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- caption_flow/cli.py +308 -0
- caption_flow/models.py +134 -1
- caption_flow/monitor.py +1 -1
- caption_flow/orchestrator.py +423 -1715
- caption_flow/processors/__init__.py +11 -0
- caption_flow/processors/base.py +219 -0
- caption_flow/processors/huggingface.py +832 -0
- caption_flow/processors/local_filesystem.py +683 -0
- caption_flow/processors/webdataset.py +782 -0
- caption_flow/storage/__init__.py +1 -0
- caption_flow/storage/exporter.py +550 -0
- caption_flow/{storage.py → storage/manager.py} +489 -401
- caption_flow/utils/checkpoint_tracker.py +2 -2
- caption_flow/utils/chunk_tracker.py +73 -32
- caption_flow/utils/dataset_loader.py +58 -298
- caption_flow/utils/dataset_metadata_cache.py +67 -0
- caption_flow/utils/image_processor.py +1 -4
- caption_flow/utils/shard_processor.py +5 -265
- caption_flow/utils/shard_tracker.py +1 -5
- caption_flow/viewer.py +594 -0
- caption_flow/workers/base.py +3 -3
- caption_flow/workers/caption.py +416 -792
- {caption_flow-0.2.2.dist-info → caption_flow-0.2.4.dist-info}/METADATA +49 -180
- caption_flow-0.2.4.dist-info/RECORD +38 -0
- caption_flow-0.2.2.dist-info/RECORD +0 -29
- {caption_flow-0.2.2.dist-info → caption_flow-0.2.4.dist-info}/WHEEL +0 -0
- {caption_flow-0.2.2.dist-info → caption_flow-0.2.4.dist-info}/entry_points.txt +0 -0
- {caption_flow-0.2.2.dist-info → caption_flow-0.2.4.dist-info}/licenses/LICENSE +0 -0
- {caption_flow-0.2.2.dist-info → caption_flow-0.2.4.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: caption-flow
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.4
|
4
4
|
Summary: Self-contained distributed community captioning system
|
5
5
|
Author-email: bghira <bghira@users.github.com>
|
6
6
|
License: MIT
|
@@ -33,6 +33,8 @@ Requires-Dist: arrow<2.0.0,>=1.3.0
|
|
33
33
|
Requires-Dist: datasets<5.0.0,>=4.0.0
|
34
34
|
Requires-Dist: boto3<2.0.0,>=1.40.11
|
35
35
|
Requires-Dist: torchdata<0.12.0,>=0.11.0
|
36
|
+
Requires-Dist: textual<6.0.0,>=5.3.0
|
37
|
+
Requires-Dist: urwid<4.0.0,>=3.0.2
|
36
38
|
Provides-Extra: dev
|
37
39
|
Requires-Dist: pytest>=7.4.0; extra == "dev"
|
38
40
|
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
@@ -44,12 +46,13 @@ Dynamic: license-file
|
|
44
46
|
|
45
47
|
# CaptionFlow
|
46
48
|
|
47
|
-
scalable, fault-tolerant **vLLM-powered image captioning**.
|
49
|
+
scalable, fault-tolerant **vLLM-powered image captioning**.
|
50
|
+
|
51
|
+
a fast websocket-based orchestrator paired with lightweight gpu workers achieves exceptional performance for batched requests through vLLM.
|
48
52
|
|
49
53
|
* **orchestrator**: hands out work in chunked shards, collects captions, checkpoints progress, and keeps simple stats.
|
50
54
|
* **workers (vLLM)**: connect to the orchestrator, stream in image samples, batch them, and generate 1..N captions per image using prompts supplied by the orchestrator.
|
51
55
|
* **config-driven**: all components read YAML config; flags can override.
|
52
|
-
* **tui monitor (optional)**: a monitor client is wired into the CLI; ship a `monitor` module to enable it.
|
53
56
|
|
54
57
|
> no conda. just `venv` + `pip`.
|
55
58
|
|
@@ -69,12 +72,14 @@ pip install -e . # installs the `caption-flow` command
|
|
69
72
|
1. copy + edit the sample configs
|
70
73
|
|
71
74
|
```bash
|
72
|
-
cp orchestrator.yaml my-orchestrator.yaml
|
73
|
-
cp worker.yaml my-worker.yaml
|
74
|
-
cp monitor.yaml my-monitor.yaml # optional
|
75
|
+
cp examples/orchestrator/local_image_files.yaml my-orchestrator.yaml
|
76
|
+
cp examples/worker.yaml my-worker.yaml
|
77
|
+
cp examples/monitor.yaml my-monitor.yaml # optional terminal interface
|
75
78
|
```
|
76
79
|
|
77
|
-
set a unique shared token in both `my-orchestrator.yaml` and `my-worker.yaml` (see `auth.worker_tokens` in the orchestrator config and `worker.token` in the worker config).
|
80
|
+
set a unique shared token in both `my-orchestrator.yaml` and `my-worker.yaml` (see `auth.worker_tokens` in the orchestrator config and `worker.token` in the worker config).
|
81
|
+
|
82
|
+
if you use private hugging face datasets/models, export `HUGGINGFACE_HUB_TOKEN` before starting anything.
|
78
83
|
|
79
84
|
2. start the orchestrator
|
80
85
|
|
@@ -90,6 +95,9 @@ caption-flow worker --config my-worker.yaml --gpu-id 0
|
|
90
95
|
|
91
96
|
# your second GPU
|
92
97
|
caption-flow worker --config my-worker.yaml --gpu-id 1
|
98
|
+
|
99
|
+
# on a remote host
|
100
|
+
caption-flow worker --config my-worker.yaml --server ws://your.hostname.address:8765
|
93
101
|
```
|
94
102
|
|
95
103
|
4. (optional) start the monitor
|
@@ -98,12 +106,25 @@ caption-flow worker --config my-worker.yaml --gpu-id 1
|
|
98
106
|
caption-flow monitor --config my-monitor.yaml
|
99
107
|
```
|
100
108
|
|
101
|
-
5.
|
109
|
+
5. export the data
|
102
110
|
|
103
111
|
```bash
|
104
|
-
caption-flow
|
112
|
+
% caption-flow export --help
|
113
|
+
Usage: caption-flow export [OPTIONS]
|
114
|
+
|
115
|
+
Export caption data to various formats.
|
116
|
+
|
117
|
+
Options:
|
118
|
+
--format [jsonl|json|csv|txt|huggingface_hub|all] Export format (default: jsonl)
|
105
119
|
```
|
106
120
|
|
121
|
+
* **jsonl**: create JSON line file in the specified `--output` path
|
122
|
+
* **csv**: exports CSV-compatible data columns to the `--output` path containing incomplete metadata
|
123
|
+
* **json**: creates a `.json` file for each sample inside the `--output` subdirectory containing **complete** metadata; useful for webdatasets
|
124
|
+
* **txt**: creates `.txt` file for each sample inside the `--output` subdirectory containing ONLY captions
|
125
|
+
* **huggingface_hub**: creates a dataset on Hugging Face Hub, possibly `--private` and `--nsfw` where necessary
|
126
|
+
* **all**: creates all export formats in a specified `--output` directory
|
127
|
+
|
107
128
|
---
|
108
129
|
|
109
130
|
## how it’s wired
|
@@ -112,20 +133,11 @@ caption-flow scan_chunks --data-dir ./caption_data --checkpoint-dir ./checkpoint
|
|
112
133
|
|
113
134
|
* **websocket server** (default `0.0.0.0:8765`) with three client roles: workers, data-feeders, and admin.
|
114
135
|
* **dataset control**: the orchestrator centrally defines the dataset (`huggingface` or `local`) and version/name. it chunk-slices shards and assigns work.
|
136
|
+
* **data serving to remote workers**: local files can be captioned by remote workers that don't have access to the same files, automatically.
|
115
137
|
* **vLLM config broadcast**: model, tp size, dtype, max seq len, memory targets, batching, sampling params, and **inference prompts** are all pushed to workers; workers can apply many changes without a model reload.
|
116
138
|
* **storage + checkpoints**: captions buffer to disk with periodic checkpoints. chunk state is tracked so restarts don’t double-work.
|
117
139
|
* **auth**: token lists for `worker`, `monitor`, and `admin` roles.
|
118
140
|
|
119
|
-
start flags you’ll likely use:
|
120
|
-
|
121
|
-
```text
|
122
|
-
--config PATH # yaml config for the orchestrator
|
123
|
-
--port INT, --host STR # bind controls
|
124
|
-
--data-dir PATH # overrides storage.data_dir
|
125
|
-
--cert PATH, --key PATH # enable TLS (or use --no-ssl for ws:// in dev)
|
126
|
-
--vllm # use the vLLM-style orchestrator (webdataset/hf)
|
127
|
-
```
|
128
|
-
|
129
141
|
### vLLM worker
|
130
142
|
|
131
143
|
* **one process per gpu**. select the device with `--gpu-id` (or `worker.gpu_id` in YAML).
|
@@ -133,27 +145,15 @@ start flags you’ll likely use:
|
|
133
145
|
* **resilient**: detects disconnects, abandons the current chunk cleanly, clears queues, reconnects, and resumes.
|
134
146
|
* **batched generate()**: images are resized down for consistent batching; each image can get multiple captions (one per prompt).
|
135
147
|
|
136
|
-
|
137
|
-
|
138
|
-
```text
|
139
|
-
--config PATH # yaml for the worker
|
140
|
-
--server URL # ws(s)://host:port
|
141
|
-
--token STR # must match an allowed worker token on the orchestrator
|
142
|
-
--name STR # display name
|
143
|
-
--batch-size INT # override vLLM batch size
|
144
|
-
--vllm # use the vLLM worker implementation
|
145
|
-
--gpu-id INT # which gpu to use
|
146
|
-
--precision STR, --model STR # optional overrides for dtype/model
|
147
|
-
--no-verify-ssl # accept self-signed certs in dev
|
148
|
-
```
|
148
|
+
---
|
149
149
|
|
150
|
-
|
150
|
+
## dataset formats
|
151
151
|
|
152
|
-
*
|
152
|
+
* huggingface hub or local based URL list datasets that are compatible with the datasets library
|
153
|
+
* webdatasets shards containing full image data; also can be hosted on the hub
|
154
|
+
* local folder filled with images; orchestrator will serve the data to workers
|
153
155
|
|
154
|
-
|
155
|
-
|
156
|
-
## configuration
|
156
|
+
## configuration path
|
157
157
|
|
158
158
|
### config discovery order
|
159
159
|
|
@@ -167,98 +167,6 @@ for any component, the CLI looks for config in this order (first match wins):
|
|
167
167
|
6. any `$XDG_CONFIG_DIRS` entries under `caption-flow/`
|
168
168
|
7. `./examples/<component>.yaml` (fallback)
|
169
169
|
|
170
|
-
### orchestrator.yaml (highlights)
|
171
|
-
|
172
|
-
```yaml
|
173
|
-
orchestrator:
|
174
|
-
host: 0.0.0.0
|
175
|
-
port: 8765
|
176
|
-
# ssl:
|
177
|
-
# cert: /path/fullchain.pem
|
178
|
-
# key: /path/privkey.pem
|
179
|
-
|
180
|
-
dataset:
|
181
|
-
type: huggingface # or "local"
|
182
|
-
path: <hf-dataset-or-local-path>
|
183
|
-
name: <logical-name>
|
184
|
-
version: "1.0"
|
185
|
-
|
186
|
-
vllm:
|
187
|
-
model: Qwen/Qwen2.5-VL-3B-Instruct
|
188
|
-
tensor_parallel_size: 1
|
189
|
-
max_model_len: 16384
|
190
|
-
dtype: float16
|
191
|
-
gpu_memory_utilization: 0.92
|
192
|
-
enforce_eager: true
|
193
|
-
disable_mm_preprocessor_cache: true
|
194
|
-
limit_mm_per_prompt: { image: 1 }
|
195
|
-
|
196
|
-
batch_size: 8
|
197
|
-
|
198
|
-
sampling:
|
199
|
-
temperature: 0.7
|
200
|
-
top_p: 0.95
|
201
|
-
max_tokens: 256
|
202
|
-
repetition_penalty: 1.05
|
203
|
-
skip_special_tokens: true
|
204
|
-
stop: ["<|end|>", "<|endoftext|>", "<|im_end|>"]
|
205
|
-
|
206
|
-
inference_prompts:
|
207
|
-
- "describe this image in detail"
|
208
|
-
- "provide a comprehensive description of the visual content"
|
209
|
-
- "what are the key elements in this image?"
|
210
|
-
|
211
|
-
storage:
|
212
|
-
data_dir: ./caption_data
|
213
|
-
checkpoint_dir: ./checkpoints
|
214
|
-
caption_buffer_size: 100
|
215
|
-
checkpoint_interval: 1000
|
216
|
-
|
217
|
-
# chunking/queueing
|
218
|
-
chunk_size: 1000
|
219
|
-
chunks_per_request: 2
|
220
|
-
chunk_buffer_multiplier: 3
|
221
|
-
min_chunk_buffer: 10
|
222
|
-
|
223
|
-
auth:
|
224
|
-
worker_tokens:
|
225
|
-
- { token: "example-worker-token", name: "Example Worker" }
|
226
|
-
monitor_tokens:
|
227
|
-
- { token: "letmein", name: "Default monitor" }
|
228
|
-
admin_tokens:
|
229
|
-
- { token: "admin-secret-2024", name: "Admin" }
|
230
|
-
```
|
231
|
-
|
232
|
-
### worker.yaml (highlights)
|
233
|
-
|
234
|
-
```yaml
|
235
|
-
worker:
|
236
|
-
server: ws://localhost:8765 # use wss:// in prod
|
237
|
-
token: example-worker-token
|
238
|
-
name: local-gpu
|
239
|
-
gpu_id: 0
|
240
|
-
vllm: true
|
241
|
-
|
242
|
-
# local queues
|
243
|
-
readahead_size: 256
|
244
|
-
inference_queue_size: 128
|
245
|
-
```
|
246
|
-
|
247
|
-
### monitor.yaml (optional)
|
248
|
-
|
249
|
-
```yaml
|
250
|
-
monitor:
|
251
|
-
server: ws://localhost:8765
|
252
|
-
token: letmein
|
253
|
-
refresh_rate: 1.0
|
254
|
-
show_contributors: true
|
255
|
-
show_quality_metrics: true
|
256
|
-
max_activity_items: 20
|
257
|
-
show_chunk_progress: true
|
258
|
-
show_worker_queues: true
|
259
|
-
show_throughput_graph: true
|
260
|
-
```
|
261
|
-
|
262
170
|
---
|
263
171
|
|
264
172
|
## tls / certificates
|
@@ -301,63 +209,24 @@ PRs welcome. keep it simple and fast.
|
|
301
209
|
```
|
302
210
|
┌─────────────┐ WebSocket ┌─────────────┐
|
303
211
|
│ Worker │◄──────────────────►│ │
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
│
|
308
|
-
|
212
|
+
│ │ │ │ ┌──────────────┐
|
213
|
+
│ │◄───────────────────│ │────►│Arrow/Parquet │
|
214
|
+
└─────────────┘ HTTP (img data) │ Orchestrator│ │ Storage │
|
215
|
+
│ │ └──────────────┘
|
216
|
+
┌─────────────┐ │ │
|
217
|
+
│ Worker │◄──────────────────►│ │
|
218
|
+
│ │ │ │
|
219
|
+
│ │◄───────────────────│ │
|
220
|
+
└─────────────┘ HTTP (img data) └─────────────┘
|
309
221
|
▲
|
310
222
|
┌─────────────┐ │
|
311
223
|
│ Monitor │◄──────────────────────────┘
|
312
224
|
└─────────────┘
|
313
225
|
```
|
314
226
|
|
315
|
-
##
|
316
|
-
|
317
|
-
### captions.parquet
|
318
|
-
- `job_id`: Unique job identifier
|
319
|
-
- `dataset`: Dataset name
|
320
|
-
- `shard`: Shard identifier
|
321
|
-
- `item_key`: Item within shard
|
322
|
-
- `caption`: Generated caption text
|
323
|
-
- `contributor_id`: Worker who generated it
|
324
|
-
- `timestamp`: Generation time
|
325
|
-
- `quality_score`: Optional quality metric
|
326
|
-
|
327
|
-
### jobs.parquet
|
328
|
-
- `job_id`: Unique identifier
|
329
|
-
- `dataset`: Dataset name
|
330
|
-
- `shard`: Shard identifier
|
331
|
-
- `status`: pending/processing/completed/failed
|
332
|
-
- `assigned_to`: Worker ID
|
333
|
-
- `timestamp`: Status change time
|
334
|
-
|
335
|
-
### contributors.parquet
|
336
|
-
- `contributor_id`: Unique identifier
|
337
|
-
- `name`: Display name
|
338
|
-
- `total_captions`: Lifetime count
|
339
|
-
- `trust_level`: Quality tier (0-5)
|
340
|
-
|
341
|
-
## Development
|
342
|
-
|
343
|
-
```bash
|
344
|
-
# Install with dev dependencies
|
345
|
-
pip install -e ".[dev]"
|
346
|
-
|
347
|
-
# Run tests
|
348
|
-
pytest
|
349
|
-
|
350
|
-
# Format code
|
351
|
-
black src/
|
352
|
-
ruff --fix src/
|
353
|
-
|
354
|
-
# Type checking
|
355
|
-
mypy src/
|
356
|
-
```
|
357
|
-
|
358
|
-
## Community Contribution
|
227
|
+
## Community Clusters
|
359
228
|
|
360
|
-
To contribute compute:
|
229
|
+
To contribute compute to a cluster:
|
361
230
|
|
362
231
|
1. Install caption-flow: `pip install caption-flow`
|
363
232
|
2. Get a worker token from the project maintainer
|
@@ -367,4 +236,4 @@ Your contributions will be tracked and attributed in the final dataset!
|
|
367
236
|
|
368
237
|
## License
|
369
238
|
|
370
|
-
|
239
|
+
AGPLv3
|
@@ -0,0 +1,38 @@
|
|
1
|
+
caption_flow/__init__.py,sha256=NLPJ25lRN7xHqncXweINDNwbt0q8lgjZ30G21zlPdRs,303
|
2
|
+
caption_flow/cli.py,sha256=t_cYCxJE7f5UtB3br2Es51JjO5KPsWM1JTdDXAxM_Lw,41371
|
3
|
+
caption_flow/models.py,sha256=2n6iphTEL62xK2FFcJM6axMsaE8KwsUv5Ak_cCF-TdQ,5652
|
4
|
+
caption_flow/monitor.py,sha256=bAt9EJqfPgT_KdbknGdCxwBRH002pRDgyUmYIj6Dyso,7885
|
5
|
+
caption_flow/orchestrator.py,sha256=ciqWghxUxk-5s6u7W3JwD7_JLSFYV57NgOwiMkxME-I,36133
|
6
|
+
caption_flow/viewer.py,sha256=HxO98eHR1xtivG0dEdYC2U9T_RgeRfJqqTK-37u9bNM,20471
|
7
|
+
caption_flow/processors/__init__.py,sha256=hvq-OuAJWQe6hFglKe7QmkS8473k20FmxZDSxfXpCrg,423
|
8
|
+
caption_flow/processors/base.py,sha256=JlTqCHo5HRXrXMVzgle_6pNwh4HGHsF7jLF6PeSnWr0,6783
|
9
|
+
caption_flow/processors/huggingface.py,sha256=MNz9vDMtrrTOSXe9Q_kbBrQ7XBv69X6x5xD_QP9icdg,33765
|
10
|
+
caption_flow/processors/local_filesystem.py,sha256=EYmsImbkqsIU7UZL2FijL0hotKLtPOtkzfwernQDSxA,27860
|
11
|
+
caption_flow/processors/webdataset.py,sha256=xsrYx7_5FCqez30dc4hSDYfyA9A0oKqHqwt7CRc1J0c,33812
|
12
|
+
caption_flow/storage/__init__.py,sha256=IVnzcSCPpPuyp-QLlgJirRZ9Sb3tR0F4sfuF5u2cNMk,36
|
13
|
+
caption_flow/storage/exporter.py,sha256=mFJqMDQ61cP-qcXe118_-oL1TUqULdQZ8LdjSTym44I,19697
|
14
|
+
caption_flow/storage/manager.py,sha256=sNslCw0uhLHihYhbo_IQg9ycDPW2IEQt9nZVMKGPVyw,46265
|
15
|
+
caption_flow/utils/__init__.py,sha256=F1BChVoCsj9zn1GJRBOLHET1kLW6xrAmsbzcR7hHy6Y,202
|
16
|
+
caption_flow/utils/auth.py,sha256=UrxX2n8OEEcfMD1Ey27TxGfrJFmUCpC59x-SCrQJoVE,2253
|
17
|
+
caption_flow/utils/caption_utils.py,sha256=esUMAdcCkNjRroZ0Bhxv0_yKlLtMf0XeDCTt-5k6bik,5309
|
18
|
+
caption_flow/utils/certificates.py,sha256=eu4blQZEkL9NRaY1ynQWg1asvDorRYhGRZea7STonJE,4635
|
19
|
+
caption_flow/utils/checkpoint_tracker.py,sha256=-nN5gLvXyMdKOCT2SNNL2Km6UYm2Hii9wuXeezWhwx4,3339
|
20
|
+
caption_flow/utils/chunk_tracker.py,sha256=x9UwFxpj-nMeAJ6bpKw5E09QNUqu7L0pejTlk8nxgE8,19402
|
21
|
+
caption_flow/utils/dataset_loader.py,sha256=2-SgXPGQkF4CyA3zyVYfSbZMSk4YzTsVFY0izmOZPrM,8771
|
22
|
+
caption_flow/utils/dataset_metadata_cache.py,sha256=AJ8Z1GYT0DC9_LLjxNvrePKU7ecenNZun5GhaB2gvj0,2650
|
23
|
+
caption_flow/utils/image_processor.py,sha256=7Ed92iUJ-OvjzQmAGPaULoYEqoirVHHo0lxtceWGc44,5586
|
24
|
+
caption_flow/utils/job_queue.py,sha256=itdfXcrkvGjmXn4qtpgMF63k1ufRBaejDe4V6WcxzgU,1104
|
25
|
+
caption_flow/utils/json_utils.py,sha256=IiZYn8uCM-3pYmyIbX2fmaOIyutArn67SqAyp0ggNpU,5396
|
26
|
+
caption_flow/utils/prompt_template.py,sha256=AKp0diSZqNBMwZkpiTNjw8-bbQwHStr7QZTOJ7o1dC4,4345
|
27
|
+
caption_flow/utils/shard_processor.py,sha256=_PCW5TfSHFfCc63Sn7bVzgjA625-aWzL4cWwZLjW0rQ,3935
|
28
|
+
caption_flow/utils/shard_tracker.py,sha256=1OqiueaC8WoxhY2nc03erZAc50mnQCZazATS6R14lbQ,3029
|
29
|
+
caption_flow/utils/vllm_config.py,sha256=TC7Rmjk0zRKbBXbWUXrFL4Z58hzax_-4L0pXZn09hdM,6019
|
30
|
+
caption_flow/workers/base.py,sha256=2AGWERC5hbmO-0V_A1MUbgRVvRNN3blqGPyDokvvzmM,7575
|
31
|
+
caption_flow/workers/caption.py,sha256=_uvpdoBzym1TKWKXtky7hBfj8YnG1EaJz-NRwaH2X1A,36722
|
32
|
+
caption_flow/workers/data.py,sha256=0Tg8NE0wdONeMlivYQ4nvbcfWdLuU51O7vR8_YSnJgo,14813
|
33
|
+
caption_flow-0.2.4.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
|
34
|
+
caption_flow-0.2.4.dist-info/METADATA,sha256=k6N1nH8rt-dpIxso4fed-H58IZdmomPw22X22G60z9k,9670
|
35
|
+
caption_flow-0.2.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
36
|
+
caption_flow-0.2.4.dist-info/entry_points.txt,sha256=KnVlyrGKZj6p2zNyuEnCx4Y6jvJ4V-mcfN0lddPKTlQ,55
|
37
|
+
caption_flow-0.2.4.dist-info/top_level.txt,sha256=_bXpKRutqded0FQ80dCChIz26ETV7tL4d4e2E_Y1FXs,13
|
38
|
+
caption_flow-0.2.4.dist-info/RECORD,,
|
@@ -1,29 +0,0 @@
|
|
1
|
-
caption_flow/__init__.py,sha256=NLPJ25lRN7xHqncXweINDNwbt0q8lgjZ30G21zlPdRs,303
|
2
|
-
caption_flow/cli.py,sha256=fkyQHzs5kei6-9ftkbJjko-K67TARxd7yNf7x9e7KSs,28820
|
3
|
-
caption_flow/models.py,sha256=qo6lQiO10UISbaBVr6Cs-fSW_pmjwE6kmiTmmU_l3Wk,2140
|
4
|
-
caption_flow/monitor.py,sha256=ZZCSasYLKJ-UzA3-RoAtytv-tbNA-m3h5YjlZg_vukg,7870
|
5
|
-
caption_flow/orchestrator.py,sha256=9yWKVcaR-S6naNQSd7Np8AemwV5lNDmB_lCufpvVrS0,96282
|
6
|
-
caption_flow/storage.py,sha256=kGv9iQAgxwLLlAIPU6TBrlagdfxA339eBz1xG0yYRsc,40981
|
7
|
-
caption_flow/utils/__init__.py,sha256=F1BChVoCsj9zn1GJRBOLHET1kLW6xrAmsbzcR7hHy6Y,202
|
8
|
-
caption_flow/utils/auth.py,sha256=UrxX2n8OEEcfMD1Ey27TxGfrJFmUCpC59x-SCrQJoVE,2253
|
9
|
-
caption_flow/utils/caption_utils.py,sha256=esUMAdcCkNjRroZ0Bhxv0_yKlLtMf0XeDCTt-5k6bik,5309
|
10
|
-
caption_flow/utils/certificates.py,sha256=eu4blQZEkL9NRaY1ynQWg1asvDorRYhGRZea7STonJE,4635
|
11
|
-
caption_flow/utils/checkpoint_tracker.py,sha256=8tsTFF-HcygitK92YcS-QWzeg-qRm9AuCpQoQRfC8M0,3335
|
12
|
-
caption_flow/utils/chunk_tracker.py,sha256=SO6ERvEwGXuikGDVaXFota_3Ix8BnePMU7CiZJKBAnQ,18025
|
13
|
-
caption_flow/utils/dataset_loader.py,sha256=Bvo-aa5jWtjzqXW0rEisdiWaN7Q-aH02rXXUu9uXqGo,19194
|
14
|
-
caption_flow/utils/image_processor.py,sha256=Zl8TAv9gYPdAYat3UiTuuNdIb2fXNfZ35AxsxuovJTs,5650
|
15
|
-
caption_flow/utils/job_queue.py,sha256=itdfXcrkvGjmXn4qtpgMF63k1ufRBaejDe4V6WcxzgU,1104
|
16
|
-
caption_flow/utils/json_utils.py,sha256=IiZYn8uCM-3pYmyIbX2fmaOIyutArn67SqAyp0ggNpU,5396
|
17
|
-
caption_flow/utils/prompt_template.py,sha256=AKp0diSZqNBMwZkpiTNjw8-bbQwHStr7QZTOJ7o1dC4,4345
|
18
|
-
caption_flow/utils/shard_processor.py,sha256=c6COBKhFzZyUeJqot5uGVR3ANeOReBfs8-DR27mrdcA,14242
|
19
|
-
caption_flow/utils/shard_tracker.py,sha256=Wt2oE-O85F2FxSnqIocJiaYeFn00OVVjIiklZIZRGL8,3233
|
20
|
-
caption_flow/utils/vllm_config.py,sha256=TC7Rmjk0zRKbBXbWUXrFL4Z58hzax_-4L0pXZn09hdM,6019
|
21
|
-
caption_flow/workers/base.py,sha256=jPm_Xw4Lxd0cnrPs-biBqKRQKkTOJLvHLolmp0Gb1CI,7530
|
22
|
-
caption_flow/workers/caption.py,sha256=NZ9kTjk2uOoNwyyNSkB_arYk213vLr5mowHN-OjiFkk,54631
|
23
|
-
caption_flow/workers/data.py,sha256=0Tg8NE0wdONeMlivYQ4nvbcfWdLuU51O7vR8_YSnJgo,14813
|
24
|
-
caption_flow-0.2.2.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
|
25
|
-
caption_flow-0.2.2.dist-info/METADATA,sha256=h9VN2ZWXVDH935Eavb-1kfsBpuW7m4Oph3tjh9ucc3w,11941
|
26
|
-
caption_flow-0.2.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
27
|
-
caption_flow-0.2.2.dist-info/entry_points.txt,sha256=KnVlyrGKZj6p2zNyuEnCx4Y6jvJ4V-mcfN0lddPKTlQ,55
|
28
|
-
caption_flow-0.2.2.dist-info/top_level.txt,sha256=_bXpKRutqded0FQ80dCChIz26ETV7tL4d4e2E_Y1FXs,13
|
29
|
-
caption_flow-0.2.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|