in optimum/neuron/utils/runner.py [0:0]
def install_requirements(self, requirements_filename: Union[str, Path]):
"""
Installs the necessary requirements to run the example if the provided file exists, otherwise does nothing.
"""
if self._installed_requirements:
return
if self.use_venv:
# Update pip
cmd_line = f"{self.pip_name} install --upgrade pip".split()
p = subprocess.Popen(cmd_line)
returncode = p.wait()
assert returncode == 0
# Set pip repository pointing to the Neuron repository
cmd_line = (
f"{self.pip_name} config set global.extra-index-url https://pip.repos.neuron.amazonaws.com".split()
)
p = subprocess.Popen(cmd_line)
returncode = p.wait()
assert returncode == 0
# Install wget, awscli, Neuron Compiler and Neuron Framework
cmd_line = f"{self.pip_name} freeze".split()
p = subprocess.Popen(cmd_line, stdout=PIPE)
cmd_line = "grep torch-neuronx".split()
p = subprocess.Popen(cmd_line, stdin=p.stdout, stdout=PIPE)
stdout, _ = p.communicate()
if not stdout:
cmd_line = f"{self.pip_name} install wget awscli neuronx-cc==2.* torch-neuronx torchvision".split()
p = subprocess.Popen(cmd_line)
returncode = p.wait()
assert returncode == 0
# Install requirements
if isinstance(requirements_filename, str):
requirements_filename = Path(requirements_filename)
if requirements_filename.exists():
cmd_line = f"{self.pip_name} install -r {requirements_filename.as_posix()}".split()
p = subprocess.Popen(cmd_line)
returncode = p.wait()
assert returncode == 0
self._installed_requirements = True