* Update tests to `pip install -e .`
Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>
* Auto-format by https://ultralytics.com/actions
* Update pyproject.toml
Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>
* Use `setup-uv` and `uv pip` for package management.
Replaced `setup-python` with `setup-uv` and updated pip commands to use the `uv` tool for dependency installation and listing. Simplifies package management and integrates
* Use `setup-uv` and `uv pip` for package management.
Replaced `setup-python` with `setup-uv` and updated pip commands to use the `uv` tool for dependency installation and listing. Simplifies package management and integrates-uv` for improved workflow consistency.
* Use `setup-uv` and `uv pip` for package management.
Replaced `setup-python` with `setup-uv` and updated pip commands to use the `uv` tool for dependency installation and listing. Simplifies package management and integrates-uv` for improved workflow consistency.
* Use `setup-uv` and `uv pip` for package management.
Replaced `setup-python` with `setup-uv` and updated pip commands to use the `uv` tool for dependency installation and listing. Simplifies package management and integrates-uv` for improved workflow consistency.
---------
Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>
Co-authored-by: UltralyticsAssistant <web@ultralytics.com>
fix: utils/google_app_engine/additional_requirements.txt to reduce vulnerabilities
The following vulnerabilities are fixed by pinning transitive dependencies:
- https://snyk.io/vuln/SNYK-PYTHON-ZIPP-7430899
Co-authored-by: snyk-bot <snyk-bot@snyk.io>
* Add license line to .github/ISSUE_TEMPLATE/bug-report.yml
* Add license line to .github/ISSUE_TEMPLATE/config.yml
* Add license line to .github/ISSUE_TEMPLATE/feature-request.yml
* Add license line to .github/ISSUE_TEMPLATE/question.yml
* Add license line to .github/dependabot.yml
* Add license line to .github/workflows/ci-testing.yml
* Add license line to .github/workflows/cla.yml
* Add license line to .github/workflows/codeql-analysis.yml
* Add license line to .github/workflows/docker.yml
* Add license line to .github/workflows/format.yml
* Add license line to .github/workflows/greetings.yml
* Add license line to .github/workflows/links.yml
* Add license line to .github/workflows/merge-main-into-prs.yml
* Add license line to .github/workflows/stale.yml
* Add license line to benchmarks.py
* Add license line to classify/predict.py
* Add license line to classify/train.py
* Add license line to classify/val.py
* Add license line to data/Argoverse.yaml
* Add license line to data/GlobalWheat2020.yaml
* Add license line to data/ImageNet.yaml
* Add license line to data/ImageNet10.yaml
* Add license line to data/ImageNet100.yaml
* Add license line to data/ImageNet1000.yaml
* Add license line to data/Objects365.yaml
* Add license line to data/SKU-110K.yaml
* Add license line to data/VOC.yaml
* Add license line to data/VisDrone.yaml
* Add license line to data/coco.yaml
* Add license line to data/coco128-seg.yaml
* Add license line to data/coco128.yaml
* Add license line to data/hyps/hyp.Objects365.yaml
* Add license line to data/hyps/hyp.VOC.yaml
* Add license line to data/hyps/hyp.no-augmentation.yaml
* Add license line to data/hyps/hyp.scratch-high.yaml
* Add license line to data/hyps/hyp.scratch-low.yaml
* Add license line to data/hyps/hyp.scratch-med.yaml
* Add license line to data/xView.yaml
* Add license line to detect.py
* Add license line to export.py
* Add license line to hubconf.py
* Add license line to models/common.py
* Add license line to models/experimental.py
* Add license line to models/hub/anchors.yaml
* Add license line to models/hub/yolov3-spp.yaml
* Add license line to models/hub/yolov3-tiny.yaml
* Add license line to models/hub/yolov3.yaml
* Add license line to models/hub/yolov5-bifpn.yaml
* Add license line to models/hub/yolov5-fpn.yaml
* Add license line to models/hub/yolov5-p2.yaml
* Add license line to models/hub/yolov5-p34.yaml
* Add license line to models/hub/yolov5-p6.yaml
* Add license line to models/hub/yolov5-p7.yaml
* Add license line to models/hub/yolov5-panet.yaml
* Add license line to models/hub/yolov5l6.yaml
* Add license line to models/hub/yolov5m6.yaml
* Add license line to models/hub/yolov5n6.yaml
* Add license line to models/hub/yolov5s-LeakyReLU.yaml
* Add license line to models/hub/yolov5s-ghost.yaml
* Add license line to models/hub/yolov5s-transformer.yaml
* Add license line to models/hub/yolov5s6.yaml
* Add license line to models/hub/yolov5x6.yaml
* Add license line to models/segment/yolov5l-seg.yaml
* Add license line to models/segment/yolov5m-seg.yaml
* Add license line to models/segment/yolov5n-seg.yaml
* Add license line to models/segment/yolov5s-seg.yaml
* Add license line to models/segment/yolov5x-seg.yaml
* Add license line to models/tf.py
* Add license line to models/yolo.py
* Add license line to models/yolov5l.yaml
* Add license line to models/yolov5m.yaml
* Add license line to models/yolov5n.yaml
* Add license line to models/yolov5s.yaml
* Add license line to models/yolov5x.yaml
* Add license line to pyproject.toml
* Add license line to segment/predict.py
* Add license line to segment/train.py
* Add license line to segment/val.py
* Add license line to train.py
* Add license line to utils/__init__.py
* Add license line to utils/activations.py
* Add license line to utils/augmentations.py
* Add license line to utils/autoanchor.py
* Add license line to utils/autobatch.py
* Add license line to utils/aws/resume.py
* Add license line to utils/callbacks.py
* Add license line to utils/dataloaders.py
* Add license line to utils/downloads.py
* Add license line to utils/flask_rest_api/example_request.py
* Add license line to utils/flask_rest_api/restapi.py
* Add license line to utils/general.py
* Add license line to utils/google_app_engine/app.yaml
* Add license line to utils/loggers/__init__.py
* Add license line to utils/loggers/clearml/clearml_utils.py
* Add license line to utils/loggers/clearml/hpo.py
* Add license line to utils/loggers/comet/__init__.py
* Add license line to utils/loggers/comet/comet_utils.py
* Add license line to utils/loggers/comet/hpo.py
* Add license line to utils/loggers/wandb/wandb_utils.py
* Add license line to utils/loss.py
* Add license line to utils/metrics.py
* Add license line to utils/plots.py
* Add license line to utils/segment/augmentations.py
* Add license line to utils/segment/dataloaders.py
* Add license line to utils/segment/general.py
* Add license line to utils/segment/loss.py
* Add license line to utils/segment/metrics.py
* Add license line to utils/segment/plots.py
* Add license line to utils/torch_utils.py
* Add license line to utils/triton.py
* Add license line to val.py
* Auto-format by https://ultralytics.com/actions
* Update ImageNet1000.yaml
Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>
* Auto-format by https://ultralytics.com/actions
---------
Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>
Co-authored-by: Glenn Jocher <glenn.jocher@ultralytics.com>
* Update dataloaders.py
This is to address (and hopefully fix) this issue: Multi-GPU DDP RAM multiple-cache bug #3818 (https://github.com/ultralytics/yolov5/issues/3818). This was a very serious and "blocking" issue until I could figure out what was going on. The problem was especially bad when running Multi-GPU jobs with 8 GPUs, RAM usage was 8x higher than expected (!), causing repeated OOM failures. Hopefully this fix will help others.
DDP causes each RANK to launch it's own process (one for each GPU) with it's own trainloader, and its own RAM image cache. The DistributedSampler used by DDP (https://github.com/pytorch/pytorch/blob/master/torch/utils/data/distributed.py) will feed only a subset of images (1/WORLD_SIZE) to each available GPU on each epoch, but since the images are shuffled between epochs, each GPU process must still cache all images. So I created a subclass of DistributedSampler called SmartDistributedSampler that forces each GPU process to always sample the same subset (using modulo arithmetic with RANK and WORLD_SIZE) while still allowing random shuffling between epochs. I don't believe this disrupts the overall "randomness" of the sampling, and I haven't noticed any performance degradation.
Signed-off-by: davidsvaughn <davidsvaughn@gmail.com>
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Update dataloaders.py
move extra parameter (rank) to end so won't mess up pre-existing positional args
* Update dataloaders.py
removing extra '#'
* Update dataloaders.py
sample from DDP index array (self.idx) in mixup mosaic
* Merging self.indices and self.idx (DDP indices) into single attribute (self.indices).
Also adding SmartDistributedSampler to segmentation dataloader
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Multiply GB displayed by WORLD_SIZE
---------
Signed-off-by: davidsvaughn <davidsvaughn@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Glenn Jocher <glenn.jocher@ultralytics.com>