diff --git a/README.md b/README.md index e6a94b7..bfde164 100644 --- a/README.md +++ b/README.md @@ -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`) diff --git a/requirements_3.9_arm64.txt b/requirements_3.9_arm64.txt new file mode 100644 index 0000000..c63501c --- /dev/null +++ b/requirements_3.9_arm64.txt @@ -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 diff --git a/scripts/0_setup.sh b/scripts/0_setup.sh index 1908632..54b5d31 100755 --- a/scripts/0_setup.sh +++ b/scripts/0_setup.sh @@ -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."