Add support for Apple M1 laptops (#71)

* Add support for Apple M1 laptops

* Pre-install numpy

* Use forked DeepFaceLab with minor fixes

* Use --no-single-branch when cloning DFL

* Minor improvements

* Minor fixes to 0_setup.sh

* Update versions

* Update README

Co-authored-by: Oleksandr Chychkan <chychkan@gmail.com>
This commit is contained in:
Alexander Canton 2022-02-23 13:41:21 +10:00 committed by GitHub
parent cff388ea89
commit a3ab8d8b63
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 62 additions and 3 deletions

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.
## 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
**Tools**
@ -14,6 +18,9 @@ Make sure you have installed:
- [Python 3](https://www.python.org/) (check with `python3 --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**
1. Clone this repository (`git clone https://github.com/chychkan/DeepFaceLab_MacOS.git`)

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

View File

@ -6,9 +6,19 @@ set -e
mkdir -p .dfl
mkdir -p workspace
is_arm64() {
[ "$(uname -m)" == "arm64" ]
}
is_arm64 && echo "Running on Apple M1 chip"
if [ ! -d .dfl/DeepFaceLab ]; then
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
if [ ! -d .dfl/env ]; then
@ -17,14 +27,43 @@ fi
source .dfl/env/bin/activate
python -m pip install --upgrade pip
version=$(python -V | cut -f 2 -d ' ' | cut -f 1,2 -d .)
reqs_file='requirements.txt'
version_suffix=''
if [[ ! -z "$version" && -f "requirements_$version.txt" ]]; then
reqs_file="requirements_$version.txt"
version_suffix="_$version"
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)"
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."