ipex-llm/python/llm/scripts/check.py
Yuxuan Xia ca2479be87
Update scripts readme (#10725)
* Update scripts readme

* Update scripts readme

* Update README

* Update readme

* Update readme

* Update windows env check readme

* Adjust env check readme

* Update windows env check

* Update env check readme

* Adjust the env-check README

* Modify the env-check README
2024-04-25 17:24:37 +08:00

179 lines
No EOL
6 KiB
Python

#
# Copyright 2016 The BigDL Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
import sys
import subprocess
def check_python_version():
py_version = sys.version.split()[0]
lst = py_version.split(".")
v1 = eval(lst[0])
v2 = eval(lst[1])
if v1!=3 or v2<9:
print("Python Version must be higher than 3.9.x, please check python version. More details could be found in the README.md")
return 1
return 0
def check_transformer_version():
try:
import transformers
print(f"transformers={transformers.__version__}")
except:
print("Transformers is not installed.")
def check_torch_version():
try:
import torch
print(f"torch={torch.__version__}")
except:
print("PyTorch is not installed.")
def check_torch_version():
try:
import torch
print(f"torch={torch.__version__}")
except:
print("PyTorch is not installed.")
def check_ipex_llm_version():
import os
if os.system("pip show ipex-llm")!=0:
print("ipex-llm is not installed")
def check_ipex_version():
try:
import intel_extension_for_pytorch as ipex
print(f"ipex={ipex.__version__}")
except:
print("IPEX is not installed properly. ")
def check_memory():
physical_mem = subprocess.run('wmic computersystem get totalphysicalmemory', capture_output=True, text=True).stdout
"""
Example output:
TotalPhysicalMemory
68448202752
"""
physical_mem = physical_mem.split('\n')
for i in range(1, len(physical_mem)+1):
if physical_mem[-i].strip().isdigit():
print(f'Total Memory: {int(physical_mem[-i].strip()) / 1024**3:.3f} GB')
break
print()
memory = subprocess.run('wmic memorychip get Capacity, Speed', capture_output=True, text=True).stdout
"""
Example output:
Capacity Speed
34359738368 3200
34359738368 3200
"""
memory = memory.split('\n\n')
chip_count = 0
for i in range(1, len(memory)+1):
if memory[-i] != '' and 'Speed' not in memory[-i]:
capacity, speed = memory[-i].strip().split(' ')
# convert capacity from byte to GB
capacity = str(int(int(capacity) / 1024**3))
if capacity.isdigit() and speed.isdigit():
print(f'Chip {chip_count} Memory: {capacity} GB | Speed: {speed} MHz')
chip_count += 1
def check_cpu():
cpu_info = subprocess.run('wmic cpu get Name, NumberOfCores, NumberOfLogicalProcessors, MaxClockSpeed, Manufacturer', capture_output=True, text=True).stdout
"""
Example output:
Manufacturer MaxClockSpeed Name NumberOfCores NumberOfLogicalProcessors
GenuineIntel 3200 12th Gen Intel(R) Core(TM) i9-12900K 16 24
"""
cpu_info = cpu_info.split('\n\n')
names = cpu_info[0]
values = cpu_info[1]
idx = 0
while idx < len(names):
if names[idx] != ' ':
start = idx
name_end = names[start:].find(' ') + start
# for slicing the value
value_end = name_end + 1
while value_end < len(names) and names[value_end] == ' ':
value_end += 1
# updagte idx
idx = value_end
# get the slicing for the values
value_end -= 2
print(f'CPU {names[start:name_end]}: {values[start:value_end]}')
else:
idx += 1
def check_gpu_driver():
gpu_driver_info = subprocess.run("wmic path Win32_PnPSignedDriver where \"Description like '%Intel%' and Description like '%Graphics%'\" get DeviceName, DriverVersion", capture_output=True, text=True).stdout
"""
Example output:
DeviceName DriverVersion
Intel(R) Graphics System Controller Auxiliary Firmware Interface 2322.4.7.0
Intel(R) Graphics System Controller Firmware Interface 2337.5.3.0
Intel(R) Graphics Command Center 31.0.101.5084
Intel(R) Arc(TM) A770 Graphics 31.0.101.5084
"""
gpu_driver_info = gpu_driver_info.split('\n\n')
driver_info = []
# filter the information
for i in gpu_driver_info[1:]:
if i != '':
if 'Controller' not in i and 'Command Center' not in i:
driver_info.append(i.strip())
# print the gpu driver info
gpu_num = 0
for gpu in driver_info:
splitted = gpu.split(' ')
print(f'GPU {gpu_num}: {splitted[0]} \t Driver Version: {splitted[-1]}')
gpu_num += 1
def main():
if check_python_version()!=0:
return -1
print("-----------------------------------------------------------------")
check_transformer_version()
print("-----------------------------------------------------------------")
check_torch_version()
print("-----------------------------------------------------------------")
check_ipex_llm_version()
print("-----------------------------------------------------------------")
check_ipex_version()
print("-----------------------------------------------------------------")
check_memory()
print("-----------------------------------------------------------------")
check_cpu()
print("-----------------------------------------------------------------")
check_gpu_driver()
print("-----------------------------------------------------------------")
if __name__ == "__main__":
main()