Skip to content
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

'distutils' has no attribute '_msvccompiler' #650

Open
FaFia opened this issue Jan 5, 2025 · 1 comment
Open

'distutils' has no attribute '_msvccompiler' #650

FaFia opened this issue Jan 5, 2025 · 1 comment

Comments

@FaFia
Copy link

FaFia commented Jan 5, 2025

Error: AttributeError: module 'distutils' has no attribute '_msvccompiler'

I am encountering an error when trying to resume training in StyleGAN3 in anaconda env. The error occurs during the execution of the training script, and the full traceback is as follows:


(stylegan3) C:\Users\aiilab_kuro\stylegan3>python train.py --cfg=stylegan3-r --gpus=1 --batch=32 --gamma=10 --data=datasets\256pxdetectedIMG9713.zip --outdir=results\256pxdetectedIMG9713_run --resume=results\my_256_6498imgtraining_run\00011-stylegan3-r-256pxl6498img-gpus1-batch8-gamma10\network-snapshot-000400.pkl
C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\scipy\__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.24.3
  warnings.warn(f"A NumPy version >={np_minversion} and <{np_maxversion}"

Training options:
{
  "G_kwargs": {
    "class_name": "training.networks_stylegan3.Generator",
    "z_dim": 512,
    "w_dim": 512,
    "mapping_kwargs": {
      "num_layers": 2
    },
    "channel_base": 65536,
    "channel_max": 1024,
    "magnitude_ema_beta": 0.9988915792636801,
    "conv_kernel": 1,
    "use_radial_filters": true
  },
  "D_kwargs": {
    "class_name": "training.networks_stylegan2.Discriminator",
    "block_kwargs": {
      "freeze_layers": 0
    },
    "mapping_kwargs": {},
    "epilogue_kwargs": {
      "mbstd_group_size": 4
    },
    "channel_base": 32768,
    "channel_max": 512
  },
  "G_opt_kwargs": {
    "class_name": "torch.optim.Adam",
    "betas": [
      0,
      0.99
    ],
    "eps": 1e-08,
    "lr": 0.0025
  },
  "D_opt_kwargs": {
    "class_name": "torch.optim.Adam",
    "betas": [
      0,
      0.99
    ],
    "eps": 1e-08,
    "lr": 0.002
  },
  "loss_kwargs": {
    "class_name": "training.loss.StyleGAN2Loss",
    "r1_gamma": 10.0,
    "blur_init_sigma": 0,
    "blur_fade_kimg": 200.0
  },
  "data_loader_kwargs": {
    "pin_memory": true,
    "prefetch_factor": 2,
    "num_workers": 3
  },
  "training_set_kwargs": {
    "class_name": "training.dataset.ImageFolderDataset",
    "path": "datasets\\256pxdetectedIMG9713.zip",
    "use_labels": false,
    "max_size": 9713,
    "xflip": false,
    "resolution": 256,
    "random_seed": 0
  },
  "num_gpus": 1,
  "batch_size": 32,
  "batch_gpu": 32,
  "metrics": [
    "fid50k_full"
  ],
  "total_kimg": 25000,
  "kimg_per_tick": 4,
  "image_snapshot_ticks": 50,
  "network_snapshot_ticks": 50,
  "random_seed": 0,
  "ema_kimg": 10.0,
  "augment_kwargs": {
    "class_name": "training.augment.AugmentPipe",
    "xflip": 1,
    "rotate90": 1,
    "xint": 1,
    "scale": 1,
    "rotate": 1,
    "aniso": 1,
    "xfrac": 1,
    "brightness": 1,
    "contrast": 1,
    "lumaflip": 1,
    "hue": 1,
    "saturation": 1
  },
  "ada_target": 0.6,
  "resume_pkl": "results\\my_256_6498imgtraining_run\\00011-stylegan3-r-256pxl6498img-gpus1-batch8-gamma10\\network-snapshot-000400.pkl",
  "ada_kimg": 100,
  "ema_rampup": null,
  "run_dir": "results\\256pxdetectedIMG9713_run\\00004-stylegan3-r-256pxdetectedIMG9713-gpus1-batch32-gamma10"
}

Output directory:    results\256pxdetectedIMG9713_run\00004-stylegan3-r-256pxdetectedIMG9713-gpus1-batch32-gamma10
Number of GPUs:      1
Batch size:          32 images
Training duration:   25000 kimg
Dataset path:        datasets\256pxdetectedIMG9713.zip
Dataset size:        9713 images
Dataset resolution:  256
Dataset labels:      False
Dataset x-flips:     False

Creating output directory...
Launching processes...
Loading training set...
C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\utils\data\sampler.py:76: UserWarning: `data_source` argument is not used and will be removed in 2.2.0.You may still have custom implementation that utilizes it.
  warnings.warn(
C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\scipy\__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.24.3
  warnings.warn(f"A NumPy version >={np_minversion} and <{np_maxversion}"
C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\scipy\__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.24.3
  warnings.warn(f"A NumPy version >={np_minversion} and <{np_maxversion}"
C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\scipy\__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.24.3
  warnings.warn(f"A NumPy version >={np_minversion} and <{np_maxversion}"

Num images:  9713
Image shape: [3, 256, 256]
Label shape: [0]

Constructing networks...
Resuming from "results\my_256_6498imgtraining_run\00011-stylegan3-r-256pxl6498img-gpus1-batch8-gamma10\network-snapshot-000400.pkl"
Setting up PyTorch plugin "bias_act_plugin"... C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\utils\cpp_extension.py:1964: UserWarning: TORCH_CUDA_ARCH_LIST is not set, all archs for visible cards are included for compilation.
If this is not desired, please set os.environ['TORCH_CUDA_ARCH_LIST'].
  warnings.warn(
Failed!
Traceback (most recent call last):
  File "C:\Users\aiilab_kuro\stylegan3\train.py", line 286, in <module>
    main() # pylint: disable=no-value-for-parameter
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\click\core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\click\core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\click\core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\click\core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "C:\Users\aiilab_kuro\stylegan3\train.py", line 281, in main
    launch_training(c=c, desc=desc, outdir=opts.outdir, dry_run=opts.dry_run)
  File "C:\Users\aiilab_kuro\stylegan3\train.py", line 96, in launch_training
    subprocess_fn(rank=0, c=c, temp_dir=temp_dir)
  File "C:\Users\aiilab_kuro\stylegan3\train.py", line 47, in subprocess_fn
    training_loop.training_loop(rank=rank, **c)
  File "C:\Users\aiilab_kuro\stylegan3\training\training_loop.py", line 168, in training_loop
    img = misc.print_module_summary(G, [z, c])
  File "C:\Users\aiilab_kuro\stylegan3\torch_utils\misc.py", line 216, in print_module_summary
    outputs = module(*inputs)
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\nn\modules\module.py", line 1736, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\nn\modules\module.py", line 1844, in _call_impl
    return inner()
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\nn\modules\module.py", line 1790, in inner
    result = forward_call(*args, **kwargs)
  File "C:\Users\aiilab_kuro\stylegan3\training\networks_stylegan3.py", line 511, in forward
    ws = self.mapping(z, c, truncation_psi=truncation_psi, truncation_cutoff=truncation_cutoff, update_emas=update_emas)
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\nn\modules\module.py", line 1736, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\nn\modules\module.py", line 1844, in _call_impl
    return inner()
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\nn\modules\module.py", line 1790, in inner
    result = forward_call(*args, **kwargs)
  File "C:\Users\aiilab_kuro\stylegan3\training\networks_stylegan3.py", line 151, in forward
    x = getattr(self, f'fc{idx}')(x)
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\nn\modules\module.py", line 1736, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\nn\modules\module.py", line 1844, in _call_impl
    return inner()
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\nn\modules\module.py", line 1790, in inner
    result = forward_call(*args, **kwargs)
  File "C:\Users\aiilab_kuro\stylegan3\training\networks_stylegan3.py", line 100, in forward
    x = bias_act.bias_act(x, b, act=self.activation)
  File "C:\Users\aiilab_kuro\stylegan3\torch_utils\ops\bias_act.py", line 84, in bias_act
    if impl == 'cuda' and x.device.type == 'cuda' and _init():
  File "C:\Users\aiilab_kuro\stylegan3\torch_utils\ops\bias_act.py", line 41, in _init
    _plugin = custom_ops.get_plugin(
  File "C:\Users\aiilab_kuro\stylegan3\torch_utils\custom_ops.py", line 136, in get_plugin
    torch.utils.cpp_extension.load(name=module_name, build_directory=cached_build_dir,
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\utils\cpp_extension.py", line 1314, in load
    return _jit_compile(
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\utils\cpp_extension.py", line 1721, in _jit_compile
    _write_ninja_file_and_build_library(
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\utils\cpp_extension.py", line 1833, in _write_ninja_file_and_build_library
    _run_ninja_build(
  File "C:\Users\aiilab_kuro\anaconda3\envs\stylegan3\lib\site-packages\torch\utils\cpp_extension.py", line 2081, in _run_ninja_build
    vc_env = distutils._msvccompiler._get_vc_env(plat_spec)
AttributeError: module 'distutils' has no attribute '_msvccompiler'

The error occurs during the loading of the bias_act module while resuming training. The specific issue appears to be related to the interaction between PyTorch's cpp_extension.py and the Microsoft Visual Studio setup.
Based on my understanding, the error suggests that the distutils module cannot locate or access the appropriate MSVC configuration.
I’ve attempted several troubleshooting steps but have not been able to resolve the issue.

I have tried set up my environment with the following configurations and paths:

PATH includes:
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\bin\Hostx64\x64
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\lib\x64
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat
Conda Environment:

All dependencies installed via Conda or pip following the instructions in the StyleGAN3 README.

System Details
OS: Windows 11
GPU: NVIDIA GeForce RTX 4080 Super
NVIDIA Driver Version: (shows CUDA 12.7 in nvidia-smi)
CUDA Toolkit Version: 12.4 (as per nvcc --version) and 12. (as per nvidia-smi --version)
PyTorch Version: torch 2.5.1+cu124
Python Version: 3.9.21
run in anaconda

Thanks for any help, much appreciated!

@iamamiramine
Copy link

Try:
pip install setuptools==59.5.0

It worked for me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants