설치
XGBoost에서 GPU를 사용할 수 없어 상당히 헤맸다.
GPU를 사용하려고 하니 아래와 같은 에러가 발생했다.
XGBoostError: [22:17:15] /tmp/abs_40obctay9q/croots/recipe/xgboost-split_1659548945886/work/src/data/../common/common.h:157: XGBoost version not compiled with GPU support.
찾아보니 기존에는 XGBoost에서 GPU를 지원하지 않아 nvidia에서 제공하는 py-xgboost를 사용해야했으나 최근 버전의 XGBoost는 GPU를 지원한다는 모양. [docs]
다만 이를 사용하기 위해서는 XGBoost의 버전과 CUDA 버전이 어느 정도 이상이어야 한다.
필자의 CUDA 버전은 10.0이어서 부랴부랴 11.6으로 버전을 올려주었고, 현재(22.08.12.) 시점에서 conda-forge의 디폴트 xgboost 버전인 1.5버전 대신 1.6.1버전을 설치해주었다. [conda-forge]
$ conda install -c conda-forge xgboost=1.6.1
그런데 이렇게 해도 GPU를 사용할 수 없다는 에러가 발생했다.
혹시나 싶어 conda 대신 pip으로 xgboost를 설치해주었더니 GPU가 정상적으로 사용되었다.
얼핏 구글링하면서 xgboost.dll이 conda와 pip으로 설치할 때 무언가 다르게 설치된다는 것을 보았던 것 같은데, xgboost가 1.6버전으로 올라온 지 얼마 안돼 이런 문제가 발생한 게 아닐까 추측 중이다.
버전이 높아지면서 안정화되지 않을까
$ python -m pip install xgboost # 알아서 최신버전인 1.6.1로 설치된다.
GPU 사용
파라미터로 GPU를 사용할 것을 명시해주면 된다. [docs]
GPU ID는 nvidia-smi를 통해 확인하거나 python에서 torch를 import하여 확인하자.
GPU를 하나밖에 사용하지 않으면 보통 ID는 0번이다.
XGBRegressor(tree_method='gpu_hist', gpu_id=0)