File size: 4,322 Bytes
158fb03 34d223f 158fb03 34d223f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"id": "538a3f0c-50c1-4952-9fcc-070d365c9a0f",
"metadata": {
"scrolled": true,
"id": "538a3f0c-50c1-4952-9fcc-070d365c9a0f"
},
"outputs": [],
"source": [
"import os\n",
"import subprocess\n",
"from threading import Timer\n",
"from queue import Queue\n",
"\n",
"def is_colab():\n",
" try:\n",
" import google.colab\n",
" return True\n",
" except ImportError:\n",
" return False\n",
"\n",
"ROOT_DIR = \"/workspace/\" if not is_colab() else \"/content/\"\n",
"REPO_URL = \"https://huggingface.co/spaces/Linaqruf/animagine-xl\"\n",
"REPO_DIR = os.path.join(ROOT_DIR, \"animagine-xl\")\n",
"\n",
"NGROK_TOKEN = \"\"\n",
"NGROK_SUBDOMAIN = \"\"\n",
"PORT = 7860\n",
"\n",
"# os.environ[\"HF_TOKEN\"] = \"\"\n",
"os.environ[\"IS_COLAB\"] = \"1\"\n",
"os.environ[\"MODEL\"] = \"https://huggingface.co/cagliostrolab/animagine-xl-3.0/blob/main/animagine-xl-3.0.safetensors\"\n",
"os.environ[\"CACHE_EXAMPLES\"] = \"1\"\n",
"\n",
"def clone_repository(url, directory, branch=None):\n",
" subprocess.run([\"git\", \"clone\", url, directory], check=True)\n",
" if branch:\n",
" subprocess.run([\"git\", \"checkout\", branch], cwd=directory, check=True)\n",
"\n",
"def install_dependencies(directory):\n",
" dependencies = [\"accelerate==0.27.2\", \"diffusers==0.26.3\", \"gradio==4.20.0\",\n",
" \"invisible-watermark==0.2.0\", \"spaces==0.24.0\", \"omegaconf==2.3.0\", \"timm==0.9.10\"]\n",
" if is_colab():\n",
" subprocess.run([\"pip\", \"install\"] + dependencies, check=True)\n",
" else:\n",
" requirements_path = os.path.join(directory, \"requirements.txt\")\n",
" subprocess.run([\"pip\", \"install\", \"-r\", requirements_path], check=True)\n",
"\n",
"def setup_ngrok_tunnel(port, queue, auth_token, subdomain):\n",
" ngrok.set_auth_token(auth_token)\n",
" url = ngrok.connect(port, bind_tls=True, subdomain=subdomain)\n",
" queue.put(url)\n",
"\n",
"def main():\n",
" if not os.path.exists(REPO_DIR):\n",
" print(f\"Cloning repository to {REPO_DIR}\")\n",
" clone_repository(REPO_URL, REPO_DIR)\n",
"\n",
" print(\"Installing required Python libraries\")\n",
" install_dependencies(REPO_DIR)\n",
" print(\"Done!\")\n",
"\n",
" os.chdir(REPO_DIR)\n",
"\n",
" if NGROK_TOKEN:\n",
" try:\n",
" from pyngrok import conf, ngrok\n",
" except ImportError:\n",
" subprocess.run([\"pip\", \"install\", \"-qqqq\", \"--upgrade\", \"setuptools\"], check=True)\n",
" subprocess.run([\"pip\", \"install\", \"-qqqq\", \"-U\", \"pyngrok\"], check=True)\n",
" from pyngrok import conf, ngrok\n",
"\n",
" ngrok.kill()\n",
" ngrok_output_queue = Queue()\n",
" ngrok_thread = Timer(2, setup_ngrok_tunnel, args=(PORT, ngrok_output_queue, NGROK_TOKEN, NGROK_SUBDOMAIN))\n",
" ngrok_thread.start()\n",
" ngrok_thread.join()\n",
" print(ngrok_output_queue.get())\n",
"\n",
" !python app.py\n",
"\n",
"if __name__ == \"__main__\":\n",
" main()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.12"
},
"colab": {
"provenance": []
}
},
"nbformat": 4,
"nbformat_minor": 5
} |