-
Notifications
You must be signed in to change notification settings - Fork 324
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Yolov8 upgrade ultralytics version #370
Comments
Where you able to fix it? I am also trying but get a different error instead ---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[18], line 1
----> 1 prune(args)
Cell In[6], line 334, in prune(args)
332 pruning_cfg['name'] = f\"step_{i}_finetune\"
333 pruning_cfg['batch'] = batch_size # restore batch size
--> 334 model.train_v2(pruning=True, **pruning_cfg)
336 # post fine-tuning validation
337 pruning_cfg['name'] = f\"step_{i}_post_val\"
Cell In[6], line 243, in train_v2(self, pruning, **kwargs)
240 self.trainer.final_eval = final_eval_v2.__get__(self.trainer)
242 self.trainer.hub_session = self.session # attach optional HUB session
--> 243 self.trainer.train()
244 # Update model and cfg after training
245 if RANK in (-1, 0):
TypeError: BaseTrainer.train() missing 1 required positional argument: 'self'" I then tried with |
@CloudRider-pixel could u share your entire code |
Hi all and thank you for your amazing work!
I managed easily to use your yolov8 example in order to train and prune it and it works like a charm, managed to load it for inference after and I gain 2 time speed-up.
Nevertheless, I need to upgrade to latest ultralytics version.
For that I modify some import :
from ultralytics.engine.trainer import BaseTrainer
from ultralytics.utils import yaml_load, LOGGER, RANK, DEFAULT_CFG_DICT, DEFAULT_CFG_KEYS
from ultralytics.utils.checks import check_yaml
from ultralytics.utils.torch_utils import initialize_weights, de_parallel
instead of :
from ultralytics.yolo.engine.model import TASK_MAP
from ultralytics.yolo.engine.trainer import BaseTrainer
from ultralytics.yolo.utils import yaml_load, LOGGER, RANK, DEFAULT_CFG_DICT, DEFAULT_CFG_KEYS
from ultralytics.yolo.utils.checks import check_yaml
from ultralytics.yolo.utils.torch_utils import initialize_weights, de_parallel
and I modify TASK_MAP[self.task][1] to self.task_map[self.task]['trainer'] .
Seems to work at the beginning but at step 1 finetune I got the following error:
Traceback (most recent call last):
File "yolov8_pruning_ultralytics_update_light.py", line 406, in
prune(args)
File "yolov8_pruning_ultralytics_update_light.py", line 367, in prune
model.train_v2(pruning=True, **pruning_cfg)
File "yolov8_pruning_ultralytics_update_light.py", line 272, in train_v2
self.trainer.train()
File "/home/ngolo/anaconda3/envs/torch-pruning/lib/python3.8/site-packages/ultralytics/engine/trainer.py", line 198, in train
self._do_train(world_size)
File "/home/ngolo/anaconda3/envs/torch-pruning/lib/python3.8/site-packages/ultralytics/engine/trainer.py", line 370, in _do_train
self.loss, self.loss_items = self.model(batch)
File "/home/ngolo/anaconda3/envs/torch-pruning/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/home/ngolo/anaconda3/envs/torch-pruning/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1520, in call_impl
return forward_call(*args, **kwargs)
File "/home/ngolo/anaconda3/envs/torch-pruning/lib/python3.8/site-packages/ultralytics/nn/tasks.py", line 88, in forward
return self.loss(x, args, **kwargs)
File "/home/ngolo/anaconda3/envs/torch-pruning/lib/python3.8/site-packages/ultralytics/nn/tasks.py", line 267, in loss
return self.criterion(preds, batch)
File "/home/ngolo/anaconda3/envs/torch-pruning/lib/python3.8/site-packages/ultralytics/utils/loss.py", line 219, in call
pred_bboxes = self.bbox_decode(anchor_points, pred_distri) # xyxy, (b, hw, 4)
File "/home/ngolo/anaconda3/envs/torch-pruning/lib/python3.8/site-packages/ultralytics/utils/loss.py", line 191, in bbox_decode
pred_dist = pred_dist.view(b, a, 4, c // 4).softmax(3).matmul(self.proj.type(pred_dist.dtype))
RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0! (when checking argument for argument mat in method wrapper_CUDA_addmv)
Is anyone managed to use latest YOLOV8 (ultralytics) version or have any clue on how can I fix it ?
In advance, thanks.
The text was updated successfully, but these errors were encountered: