seigot / tetris

A Tetris Game for programming education in Japanese
MIT License
30 stars 107 forks source link

GitAuto: pytorch実行時にエラー(RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device('cpu') to map your storages to the CPU.) #173

Open gitauto-ai[bot] opened 6 days ago

gitauto-ai[bot] commented 6 days ago

Resolves #68

Why the bug occurs

The application attempts to deserialize a PyTorch model on a CUDA device when CUDA is not available. This results in a RuntimeError because the model was trained on a GPU, but the current environment does not have CUDA support enabled.

How to reproduce

  1. Run the application on a CPU-only machine.
  2. The application tries to load a PyTorch model using torch.load without specifying the map_location.
  3. A RuntimeError is raised:
    RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device('cpu') to map your storages to the CPU.

How to fix

Update the torch.load call in game_manager/machine_learning/block_controller_train_sample.py to include the map_location parameter. This ensures that the model is loaded onto the CPU when CUDA is not available.

Changes to be made:

This change ensures compatibility across environments with or without CUDA support.

Test these changes locally

git checkout -b gitauto/issue-68-caa2b879-c1b8-4048-a32d-c88f276000ee
git pull origin gitauto/issue-68-caa2b879-c1b8-4048-a32d-c88f276000ee