* Create install.md * Update install_cpu.md * Delete original docs/mddocs/Overview/install_cpu.md * Update install_cpu.md * Update install_gpu.md * update llm.md and install.md * Update docs in KeyFeatures * Review and fix typos * Fix on folded NOTE * Small fix * Small fix * Remove empty known_issue.md * Small fix * Small fix * Further fix * Fixes * Fix --------- Co-authored-by: Yuwen Hu <yuwen.hu@intel.com>
		
			
				
	
	
	
	
		
			3.2 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	Multi Intel GPUs selection
In Inference on GPU and Finetune (QLoRA), you have known how to run inference and finetune on Intel GPUs. In this section, we will show you two approaches to select GPU devices.
List devices
The sycl-ls tool enumerates a list of devices available in the system. You can use it after you setup oneapi environment:
- 
For Windows users:
Please make sure you are using CMD (Miniforge Prompt if using conda):
call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat" sycl-ls - 
For Linux users:
source /opt/intel/oneapi/setvars.sh sycl-ls 
If you have two Arc770 GPUs, you can get something like below:
[opencl:acc:0] Intel(R) FPGA Emulation Platform for OpenCL(TM), Intel(R) FPGA Emulation Device 1.2 [2023.16.7.0.21_160000]
[opencl:cpu:1] Intel(R) OpenCL, Intel(R) Core(TM) i9-14900K 3.0 [2023.16.7.0.21_160000]
[opencl:gpu:2] Intel(R) OpenCL Graphics, Intel(R) Arc(TM) A770 Graphics 3.0 [23.17.26241.33]
[opencl:gpu:3] Intel(R) OpenCL Graphics, Intel(R) Arc(TM) A770 Graphics 3.0 [23.17.26241.33]
[opencl:gpu:4] Intel(R) OpenCL Graphics, Intel(R) UHD Graphics 770 3.0 [23.17.26241.33]
[ext_oneapi_level_zero:gpu:0] Intel(R) Level-Zero, Intel(R) Arc(TM) A770 Graphics 1.3 [1.3.26241]
[ext_oneapi_level_zero:gpu:1] Intel(R) Level-Zero, Intel(R) Arc(TM) A770 Graphics 1.3 [1.3.26241]
[ext_oneapi_level_zero:gpu:2] Intel(R) Level-Zero, Intel(R) UHD Graphics 770 1.3 [1.3.26241]
This output shows there are two Arc A770 GPUs as well as an Intel iGPU on this machine.
Devices selection
To enable xpu, you should convert your model and input to xpu by below code:
model = model.to('xpu')
input_ids = tokenizer.encode(prompt, return_tensors="pt").to('xpu')
To select the desired devices, there are two ways: one is changing the code, another is adding an environment variable. See:
1. Select device in python
To specify a xpu, you can change the to('xpu') to to('xpu:[device_id]'), this device_id is counted from zero.
If you you want to use the second device, you can change the code like this:
model = model.to('xpu:1')
input_ids = tokenizer.encode(prompt, return_tensors="pt").to('xpu:1')
2. OneAPI device selector
Device selection environment variable, ONEAPI_DEVICE_SELECTOR, can be used to limit the choice of Intel GPU devices. As upon sycl-ls shows, the last three lines are three Level Zero GPU devices. So we can use ONEAPI_DEVICE_SELECTOR=level_zero:[gpu_id] to select devices.
For example, you want to use the second A770 GPU, you can run the python like this:
- 
For Windows users:
set ONEAPI_DEVICE_SELECTOR=level_zero:1 python generate.pyThrough
set ONEAPI_DEVICE_SELECTOR=level_zero:1, only the second A770 GPU will be available for the current environment. - 
For Linux users:
ONEAPI_DEVICE_SELECTOR=level_zero:1 python generate.pyONEAPI_DEVICE_SELECTOR=level_zero:1in upon command only affect in current python program. Also, you can export the environment variable, then run your python:export ONEAPI_DEVICE_SELECTOR=level_zero:1 python generate.py