@@ -33,7 +33,7 @@ bk_section_package_metadata_gpu_kernel_lightgbm_v10() {
3333 "neither section artifact nor BK_GPU_LIGHTGBM_INPUT_CSV/BK_GPU_LIGHTGBM_PREDICTION_CSV is available",
3434 "padata artifact mode is requested but the archive has no Nsight Compute raw CSV",
3535 "PerfTools checkout is not available when running the external predictor",
36- "Python runtime for CSV parsing or external inference is not available",
36+ "Python 3.11+ runtime for CSV parsing or external inference is not available",
3737 "prediction CSV does not contain a recognized execution-time column"
3838 ]
3939}
@@ -98,6 +98,29 @@ _bk_gpu_lightgbm_python_exists() {
9898 command -v " $python_bin " > /dev/null 2>&1
9999}
100100
101+ _bk_gpu_lightgbm_default_python () {
102+ local candidate
103+
104+ for candidate in python3.12 python3.11 python3 python; do
105+ if command -v " $candidate " > /dev/null 2>&1 ; then
106+ printf ' %s\n' " $candidate "
107+ return 0
108+ fi
109+ done
110+
111+ printf ' %s\n' " python3"
112+ }
113+
114+ _bk_gpu_lightgbm_python_compatible () {
115+ local python_bin=" $1 "
116+
117+ _bk_gpu_lightgbm_python_exists " $python_bin " || return 1
118+ " $python_bin " - << 'PY ' >/dev/null 2>&1
119+ import sys
120+ raise SystemExit(0 if sys.version_info >= (3, 11) else 1)
121+ PY
122+ }
123+
101124_bk_gpu_lightgbm_abs_path () {
102125 local path=" $1 "
103126 local dir
@@ -239,7 +262,7 @@ bk_section_package_check_applicability_gpu_kernel_lightgbm_v10() {
239262 local ncu_archive
240263 local root
241264 local predictor
242- local python_bin=" ${BK_GPU_LIGHTGBM_PYTHON:- ${BK_GPU_MLP_PYTHON:- python3 } } "
265+ local python_bin=" ${BK_GPU_LIGHTGBM_PYTHON:- ${BK_GPU_MLP_PYTHON:- $(_bk_gpu_lightgbm_default_python) } } "
243266 local missing=()
244267
245268 if [[ " $item_kind " != " section" ]]; then
256279
257280 if ! _bk_gpu_lightgbm_python_exists " $python_bin " ; then
258281 missing+=(" \" python:${python_bin} \" " )
282+ elif ! _bk_gpu_lightgbm_python_compatible " $python_bin " ; then
283+ missing+=(" \" python>=3.11:${python_bin} \" " )
259284 fi
260285
261286 if [[ -n " $prediction_csv " ]]; then
@@ -297,7 +322,7 @@ _bk_gpu_lightgbm_parse_prediction_csv() {
297322 local prediction_csv=" $1 "
298323 local package_name=" $2 "
299324 local model_version=" $3 "
300- local python_bin=" ${BK_GPU_LIGHTGBM_PYTHON:- ${BK_GPU_MLP_PYTHON:- python3 } } "
325+ local python_bin=" ${BK_GPU_LIGHTGBM_PYTHON:- ${BK_GPU_MLP_PYTHON:- $(_bk_gpu_lightgbm_default_python) } } "
301326
302327 " $python_bin " - " $prediction_csv " " $package_name " " $model_version " << 'PY '
303328import csv
@@ -427,7 +452,7 @@ _bk_gpu_lightgbm_prepare_input_from_ncu() {
427452 local _section_name=" $2 "
428453 local output_dir=" $3 "
429454 local slug=" $4 "
430- local python_bin=" ${BK_GPU_LIGHTGBM_PYTHON:- ${BK_GPU_MLP_PYTHON:- python3 } } "
455+ local python_bin=" ${BK_GPU_LIGHTGBM_PYTHON:- ${BK_GPU_MLP_PYTHON:- $(_bk_gpu_lightgbm_default_python) } } "
431456 local source_gpu=" ${BK_GPU_LIGHTGBM_SOURCE_GPU:- ${BK_GPU_MLP_SOURCE_GPU:- H100} } "
432457 local prepared_csv=" ${output_dir} /${slug} _lightgbm_input.csv"
433458 local script_path=" scripts/estimation/prepare_gpu_lightgbm_ncu_input.py"
@@ -458,7 +483,7 @@ _bk_gpu_lightgbm_run_predictor() {
458483 local input_csv_abs
459484 local prediction_csv_abs
460485 local prediction_log_abs
461- local python_bin=" ${BK_GPU_LIGHTGBM_PYTHON:- ${BK_GPU_MLP_PYTHON:- python3 } } "
486+ local python_bin=" ${BK_GPU_LIGHTGBM_PYTHON:- ${BK_GPU_MLP_PYTHON:- $(_bk_gpu_lightgbm_default_python) } } "
462487 local source_gpu=" ${BK_GPU_LIGHTGBM_SOURCE_GPU:- ${BK_GPU_MLP_SOURCE_GPU:- H100} } "
463488 local target_gpu=" ${BK_GPU_LIGHTGBM_TARGET_GPU:- ${BK_GPU_MLP_TARGET_GPU:- A100} } "
464489 local slug
0 commit comments