GoogleCloudPlatform / GoogleCloudPlatform/cloud-profiler-python

Python 3.12 `xgboost.core.XGBoostError: Invalid Parameter format for nthread expect int but value='-1'` when `DMatrix` used with `import googlecloudprofiler`.

Đang mở
#144 1 bình luận 1 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Python
Star
32
Fork
35
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

This issue was originally posted in `xgboost` repo https://github.com/dmlc/xgboost/issues/10224 .

Hi

I have a very peculiar error which happened when I've updated versions of Python and libs in project I'm working on.

Minimal example to reproduce the case is this:
```python
# file.py
import googlecloudprofiler
from xgboost import DMatrix

DMatrix([[]])
print("works")
```

```python
# requirements.txt
xgboost==2.0.3
google-cloud-profiler==4.1.0
#
numpy==1.26.4
scipy==1.13.0
google-api-python-client==2.125.0
google-auth==2.29.0
google-auth-httplib2==0.2.0
protobuf==4.25.3
requests==2.31.0
#
cachetools==5.3.3
certifi==2024.2.2
charset-normalizer==3.3.2
google-api-core==2.18.0
httplib2==0.22.0
idna==3.6
pyasn1==0.6.0
pyasn1_modules==0.4.0
pyparsing==3.1.2
rsa==4.9
uritemplate==4.1.1
urllib3==2.2.1
```

`Python 3.12.2`

Install with
```pip
pip install -r requirements.txt --no-deps
```
Run with
```bash
python file.py
```

Results in
```python
Traceback (most recent call last):
File "/project/path/file.py", line 4, in
DMatrix([[]])
File "/venv/path/lib/python3.12/site-packages/xgboost/core.py", line 730, in inner_f
return func(**kwargs)
^^^^^^^^^^^^^^
File "/venv/path/lib/python3.12/site-packages/xgboost/core.py", line 857, in __init__
handle, feature_names, feature_types = dispatch_data_backend(
^^^^^^^^^^^^^^^^^^^^^^
File "/venv/path/lib/python3.12/site-packages/xgboost/data.py", line 1081, in dispatch_data_backend
return _from_list(data, missing, threads, feature_names, feature_types)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/path/lib/python3.12/site-packages/xgboost/data.py", line 1011, in _from_list
return _from_numpy_array(array, missing, n_threads, feature_names, feature_types)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/path/lib/python3.12/site-packages/xgboost/data.py", line 207, in _from_numpy_array
_check_call(
File "/venv/path/lib/python3.12/site-packages/xgboost/core.py", line 282, in _check_call
raise XGBoostError(py_str(_LIB.XGBGetLastError()))
xgboost.core.XGBoostError: Invalid Parameter format for nthread expect int but value='-1'
```

To "solve" the problem remove `import googlecloudprofiler` from `file.py`. I really have no idea why just importing the lib causes this problem; it would make more sense after `googlecloudprofiler.start` is called.

Moreover the code works for `xgboost=1.7.6` and fails since `xgboost=2.0.0`.

Maintainer of `xgboost` mentioned
> loading the _profiler.cpython-312-x86_64-linux-gnu.so inside google profiler extension causes the error

https://github.com/dmlc/xgboost/issues/10224#issuecomment-2077751030

This is why I've opened issue here.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.