Add support for Apple M1 laptops #71

Merged
cantonalex merged 8 commits from add-arm64-support into master 2022-02-23 04:41:22 +01:00
3 changed files with 62 additions and 3 deletions
+7
View File
@@ -4,6 +4,10 @@ This project provides scripts inspired by [DeepFaceLab_Linux](https://github.com
You'll need `git`, `ffmpeg`, `python3` and python module `virtualenv` available to be able to execute these scripts. The scripts will create a virtual env sandbox and will install all necessary dependencies there, so your main installation of `python3` will be left intact. You'll need `git`, `ffmpeg`, `python3` and python module `virtualenv` available to be able to execute these scripts. The scripts will create a virtual env sandbox and will install all necessary dependencies there, so your main installation of `python3` will be left intact.
## NOTE: Apple M1 chip
Currently there's limited support for Apple M1 laptops. You can do model training, but the XSeg editor currently does not work (the DeepFaceLab codebase is not compatible with PyQt6).
## Setup ## Setup
**Tools** **Tools**
@@ -14,6 +18,9 @@ Make sure you have installed:
- [Python 3](https://www.python.org/) (check with `python3 --version`) - [Python 3](https://www.python.org/) (check with `python3 --version`)
- [Virtualenv](https://github.com/pypa/virtualenv) (check with `virtualenv --version`) - [Virtualenv](https://github.com/pypa/virtualenv) (check with `virtualenv --version`)
For **Apple M1** laptops you also need [hdf5](https://formulae.brew.sh/formula/hdf5) lib installed.
Check if you have it with `brew ls --versions hdf5`. Install it with `brew install hdf5`.
**Clone and setup** **Clone and setup**
1. Clone this repository (`git clone https://github.com/chychkan/DeepFaceLab_MacOS.git`) 1. Clone this repository (`git clone https://github.com/chychkan/DeepFaceLab_MacOS.git`)
+13
View File
@@ -0,0 +1,13 @@
numpy==1.21.4
opencv-python==4.5.5.62
numexpr==2.8.1
h5py==3.1.0
tqdm==4.62.3
colorama==0.4.4
cython==0.29.26
ffmpeg-python==0.2.0
Pillow==8.4.0
scikit-image==0.19.1
scipy==1.8.0
tensorflow-macos==2.7.0
PyQt6==6.2.3
+42 -3
View File
@@ -6,9 +6,19 @@ set -e
mkdir -p .dfl mkdir -p .dfl
mkdir -p workspace mkdir -p workspace
is_arm64() {
[ "$(uname -m)" == "arm64" ]
}
is_arm64 && echo "Running on Apple M1 chip"
if [ ! -d .dfl/DeepFaceLab ]; then if [ ! -d .dfl/DeepFaceLab ]; then
echo "Cloning DeepFaceLab" echo "Cloning DeepFaceLab"
git clone --depth 1 "https://github.com/iperov/DeepFaceLab.git" .dfl/DeepFaceLab git clone --no-single-branch --depth 1 "https://github.com/chychkan/DeepFaceLab.git" .dfl/DeepFaceLab
if is_arm64; then
(cd .dfl/DeepFaceLab; git checkout support-arm64)
fi
fi fi
if [ ! -d .dfl/env ]; then if [ ! -d .dfl/env ]; then
@@ -17,14 +27,43 @@ fi
source .dfl/env/bin/activate source .dfl/env/bin/activate
python -m pip install --upgrade pip
version=$(python -V | cut -f 2 -d ' ' | cut -f 1,2 -d .) version=$(python -V | cut -f 2 -d ' ' | cut -f 1,2 -d .)
reqs_file='requirements.txt' reqs_file='requirements.txt'
version_suffix=''
if [[ ! -z "$version" && -f "requirements_$version.txt" ]]; then if [[ ! -z "$version" && -f "requirements_$version.txt" ]]; then
reqs_file="requirements_$version.txt" version_suffix="_$version"
fi fi
architecture_suffix=''
if is_arm64 && [ -f "requirements${version_suffix}_arm64.txt" ]; then
architecture_suffix="_arm64"
fi
reqs_file="requirements${version_suffix}${architecture_suffix}.txt"
echo "Using $reqs_file for $(python -V)" echo "Using $reqs_file for $(python -V)"
pip install -r $reqs_file
if is_arm64; then
if [[ -z "$(brew ls --versions hdf5)" ]]; then
echo "ERROR: HDF5 needs to be installed to run DeepFaceLab on M1 chip."
echo "You can install it with 'brew install hdf5'. For more details, see https://formulae.brew.sh/formula/hdf5"
echo "Once it is installed, run ./scripts/0_setup.sh again"
exit 1
fi
cython_pkg="$(cat $reqs_file | grep -E 'cython==.+')"
pip --no-cache-dir install "$cython_pkg"
numpy_pkg="$(cat $reqs_file | grep -E 'numpy==.+')"
pip install "$numpy_pkg"
h5py_pkg="$(cat $reqs_file | grep -E 'h5py==.+')"
HDF5_DIR="$(brew --prefix hdf5)" pip --no-cache-dir install --no-build-isolation "$h5py_pkg"
fi
pip --no-cache-dir install -r $reqs_file
echo "Done." echo "Done."