mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
colab
This commit is contained in:
109
colab/GPU.ipynb
109
colab/GPU.ipynb
@@ -67,32 +67,102 @@
|
||||
"Model = \"Pygmalion 6B\" #@param [ \"Pygmalion 6B\", \"Pygmalion 6B Dev\"] {allow-input: true}\n",
|
||||
"Version = \"Official\" \n",
|
||||
"Provider = \"Cloudflare\" \n",
|
||||
"use_google_drive = False #@param {type:\"boolean\"}\n",
|
||||
"use_google_drive = True #@param {type:\"boolean\"}\n",
|
||||
"\n",
|
||||
"!nvidia-smi\n",
|
||||
"import subprocess\n",
|
||||
"import time\n",
|
||||
"import sys\n",
|
||||
"import os\n",
|
||||
"import threading\n",
|
||||
"from google.colab import drive\n",
|
||||
"def copy_chats():\n",
|
||||
" for dirpath, dirnames, filenames in os.walk(\"/content/drive/MyDrive/TavernAI/chats/\"):\n",
|
||||
" for filename in filenames:\n",
|
||||
" source_file = os.path.join(dirpath, filename)\n",
|
||||
" destination_file = source_file.replace(\"/content/drive/MyDrive/TavernAI/chats/\", \"/TavernAIColab/public/chats/\")\n",
|
||||
"\n",
|
||||
" if not os.path.exists(destination_file):\n",
|
||||
" if not os.path.exists(os.path.dirname(destination_file)):\n",
|
||||
" os.makedirs(os.path.dirname(destination_file))\n",
|
||||
" !cp -r {source_file} {destination_file}\n",
|
||||
" else:\n",
|
||||
" !cp -r {source_file} {destination_file}\n",
|
||||
" \n",
|
||||
"def copy_characters():\n",
|
||||
" source_files2 = os.listdir(\"/content/drive/MyDrive/TavernAI/characters\")\n",
|
||||
" destination_files2 = os.listdir(\"/TavernAIColab/public/characters/\")\n",
|
||||
"\n",
|
||||
" new_files2 = set(source_files2) - set(destination_files2)\n",
|
||||
" deleted_files2 = set(destination_files2) - set(source_files2)\n",
|
||||
" updated_files2 = [file for file in source_files2 if file in destination_files2 and \n",
|
||||
" os.path.getmtime(f'/content/drive/MyDrive/TavernAI/characters/{file}') > \n",
|
||||
" os.path.getmtime(f'/TavernAIColab/public/characters/{file}')]\n",
|
||||
"\n",
|
||||
" if new_files2:\n",
|
||||
" for file in new_files2:\n",
|
||||
" if os.path.isdir(f'/content/drive/MyDrive/TavernAI/characters/{file}'):\n",
|
||||
" !cp -r /content/drive/MyDrive/TavernAI/characters/{file} /TavernAIColab/public/characters/\n",
|
||||
" else:\n",
|
||||
" !cp /content/drive/MyDrive/TavernAI/characters/{file} /TavernAIColab/public/characters/\n",
|
||||
"\n",
|
||||
" if updated_files2:\n",
|
||||
" for file in updated_files2:\n",
|
||||
" !cp /content/drive/MyDrive/TavernAI/characters/{file} /TavernAIColab/public/characters/\n",
|
||||
" \n",
|
||||
"def sync_files():\n",
|
||||
" while True:\n",
|
||||
" source_files = os.listdir(\"/taicolabtest/public/chats/\")\n",
|
||||
" destination_files = os.listdir(\"/content/drive/MyDrive/TavernAI/chats\")\n",
|
||||
" #chats\n",
|
||||
" for dirpath, dirnames, filenames in os.walk(\"/TavernAIColab/public/chats/\"):\n",
|
||||
" for filename in filenames:\n",
|
||||
" source_file = os.path.join(dirpath, filename)\n",
|
||||
" destination_file = source_file.replace(\"/TavernAIColab/public/chats/\", \"/content/drive/MyDrive/TavernAI/chats/\")\n",
|
||||
"\n",
|
||||
" new_files = set(source_files) - set(destination_files)\n",
|
||||
" deleted_files = set(destination_files) - set(source_files)\n",
|
||||
" if not os.path.exists(destination_file):\n",
|
||||
" if not os.path.exists(os.path.dirname(destination_file)):\n",
|
||||
" os.makedirs(os.path.dirname(destination_file))\n",
|
||||
" !cp -r {source_file} {destination_file}\n",
|
||||
" elif os.path.getmtime(source_file) > os.path.getmtime(destination_file):\n",
|
||||
" !cp -r {source_file} {destination_file}\n",
|
||||
"\n",
|
||||
" if new_files:\n",
|
||||
" for file in new_files:\n",
|
||||
" !cp /taicolabtest/public/chats/{file} /content/drive/MyDrive/TavernAI/chats\n",
|
||||
" source_files2 = os.listdir(\"/TavernAIColab/public/chats/\")\n",
|
||||
" destination_files2 = os.listdir(\"/content/drive/MyDrive/TavernAI/chats\")\n",
|
||||
"\n",
|
||||
" deleted_files = set(destination_files2) - set(source_files2)\n",
|
||||
" if deleted_files:\n",
|
||||
" for file in deleted_files:\n",
|
||||
" !rm /content/drive/MyDrive/TavernAI/chats/{file}\n",
|
||||
" if os.path.isdir(f'/content/drive/MyDrive/TavernAI/chats/{file}'):\n",
|
||||
" !rm -r /content/drive/MyDrive/TavernAI/chats/{file}\n",
|
||||
" else:\n",
|
||||
" !rm /content/drive/MyDrive/TavernAI/chats/{file}\n",
|
||||
"\n",
|
||||
" time.sleep(3) # Wait\n",
|
||||
"\n",
|
||||
" #characters\n",
|
||||
" source_files2 = os.listdir(\"/TavernAIColab/public/characters/\")\n",
|
||||
" destination_files2 = os.listdir(\"/content/drive/MyDrive/TavernAI/characters\")\n",
|
||||
"\n",
|
||||
" new_files2 = set(source_files2) - set(destination_files2)\n",
|
||||
" deleted_files2 = set(destination_files2) - set(source_files2)\n",
|
||||
" updated_files2 = [file for file in source_files2 if file in destination_files2 and \n",
|
||||
" os.path.getmtime(f'/TavernAIColab/public/characters/{file}') > \n",
|
||||
" os.path.getmtime(f'/content/drive/MyDrive/TavernAI/characters/{file}')]\n",
|
||||
"\n",
|
||||
" if new_files2:\n",
|
||||
" for file in new_files2:\n",
|
||||
" if os.path.isdir(f'/taicolabtest/public/characters/{file}'):\n",
|
||||
" !cp -r /TavernAIColab/public/characters/{file} /content/drive/MyDrive/TavernAI/characters\n",
|
||||
" else:\n",
|
||||
" !cp /TavernAIColab/public/characters/{file} /content/drive/MyDrive/TavernAI/characters\n",
|
||||
"\n",
|
||||
" if deleted_files2:\n",
|
||||
" for file in deleted_files2:\n",
|
||||
" !rm /content/drive/MyDrive/TavernAI/characters/{file}\n",
|
||||
"\n",
|
||||
" if updated_files2:\n",
|
||||
" for file in updated_files2:\n",
|
||||
" !cp /TavernAIColab/public/characters/{file} /content/drive/MyDrive/TavernAI/characters\n",
|
||||
" time.sleep(3) \n",
|
||||
" \n",
|
||||
"if use_google_drive:\n",
|
||||
" drive.mount('/content/drive/')\n",
|
||||
" if not os.path.exists(\"/content/drive/MyDrive/TavernAI/\"):\n",
|
||||
@@ -126,12 +196,13 @@
|
||||
"else:\n",
|
||||
" tunnel = \"\"\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"#Henk's KoboldAI script\n",
|
||||
"!wget https://koboldai.org/ckds && chmod +x ckds\n",
|
||||
"!./ckds --init only\n",
|
||||
"p = subprocess.Popen(['/content/ckds', '--model', Model], stdout=subprocess.PIPE, stderr=subprocess.PIPE)\n",
|
||||
"\n",
|
||||
"#Tricks\n",
|
||||
"#Do not repeat! Tricks performed by a professional!\n",
|
||||
"url = ''\n",
|
||||
"while True:\n",
|
||||
" line = p.stdout.readline().decode().strip()\n",
|
||||
@@ -151,21 +222,31 @@
|
||||
" if \"INIT\" in line and \"Transformers\" in line:\n",
|
||||
" print(\"Model loading... (It will take 2 - 5 minutes)\")\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"#TavernAI\n",
|
||||
"%cd /\n",
|
||||
"!curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash\n",
|
||||
"!nvm install 19.1.0\n",
|
||||
"!nvm use 19.1.0\n",
|
||||
"!node -v\n",
|
||||
"!git clone https://github.com/TavernAI/taicolabtest\n",
|
||||
"%cd taicolabtest\n",
|
||||
"!git clone https://github.com/TavernAI/TavernAIColab\n",
|
||||
"%cd TavernAIColab\n",
|
||||
"!npm install\n",
|
||||
"time.sleep(1)\n",
|
||||
"%env colab=2\n",
|
||||
"%env colaburl=$url\n",
|
||||
"!nohup node server.js &\n",
|
||||
"time.sleep(3)\n",
|
||||
"\n",
|
||||
"%cd /\n",
|
||||
"copy_characters()\n",
|
||||
"time.sleep(1)\n",
|
||||
"copy_chats()\n",
|
||||
"time.sleep(1)\n",
|
||||
"if use_google_drive:\n",
|
||||
" t = threading.Thread(target=sync_files)\n",
|
||||
" t.daemon = True # Daemonize\n",
|
||||
" t.start()\n",
|
||||
"print('KoboldAI LINK:')\n",
|
||||
"print(url)\n",
|
||||
"print('')\n",
|
||||
|
@@ -800,7 +800,7 @@ input[type=button] {
|
||||
right: 0;
|
||||
text-align: center;
|
||||
margin-top: 36vh;
|
||||
box-shadow: 0 0 2px rgba(200,200,200,0.1);
|
||||
/*box-shadow: 0 0 2px rgba(200,200,200,0.1);*/
|
||||
padding: 4px;
|
||||
background: #191b3100;
|
||||
border-radius: 10px;
|
||||
|
Reference in New Issue
Block a user