min-dalle-test/min_dalle.ipynb

216 lines
648 KiB
Plaintext
Raw Normal View History

2022-06-28 00:58:17 +00:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
2022-07-04 14:21:12 +00:00
"id": "view-in-github",
"colab_type": "text"
2022-06-28 00:58:17 +00:00
},
"source": [
"<a href=\"https://colab.research.google.com/github/kuprel/min-dalle/blob/main/min_dalle.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "3WL-G_f2_ld8"
},
"source": [
"# min(DALL·E)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Zl_ZFisFApeh"
},
"source": [
2022-07-01 22:16:55 +00:00
"### Install"
2022-06-28 00:58:17 +00:00
]
},
{
"cell_type": "code",
"execution_count": 3,
2022-06-28 00:58:17 +00:00
"metadata": {
"cellView": "code",
2022-07-04 20:30:39 +00:00
"id": "ix_xt4X1_6F4",
"outputId": "3aeb9c3a-09f2-40d7-f9c4-80b7d1ce0712",
2022-07-04 20:30:39 +00:00
"colab": {
"base_uri": "https://localhost:8080/"
}
2022-06-28 00:58:17 +00:00
},
2022-07-04 20:30:39 +00:00
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
"Requirement already satisfied: min-dalle in /usr/local/lib/python3.7/dist-packages (0.2.24)\n",
"Requirement already satisfied: typing-extensions>=4.1.0 in /usr/local/lib/python3.7/dist-packages (from min-dalle) (4.1.1)\n",
2022-07-04 22:40:32 +00:00
"Requirement already satisfied: torch>=1.10.0 in /usr/local/lib/python3.7/dist-packages (from min-dalle) (1.11.0+cu113)\n",
"Requirement already satisfied: numpy>=1.21 in /usr/local/lib/python3.7/dist-packages (from min-dalle) (1.21.6)\n",
"Requirement already satisfied: pillow>=7.1 in /usr/local/lib/python3.7/dist-packages (from min-dalle) (7.1.2)\n",
"Requirement already satisfied: requests>=2.23 in /usr/local/lib/python3.7/dist-packages (from min-dalle) (2.23.0)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests>=2.23->min-dalle) (2022.6.15)\n",
"Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests>=2.23->min-dalle) (1.24.3)\n",
"Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests>=2.23->min-dalle) (2.10)\n",
"Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests>=2.23->min-dalle) (3.0.4)\n",
"Tue Jul 5 00:03:52 2022 \n",
2022-07-04 20:30:39 +00:00
"+-----------------------------------------------------------------------------+\n",
"| NVIDIA-SMI 460.32.03 Driver Version: 460.32.03 CUDA Version: 11.2 |\n",
"|-------------------------------+----------------------+----------------------+\n",
"| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n",
"| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n",
"| | | MIG M. |\n",
"|===============================+======================+======================|\n",
"| 0 Tesla P100-PCIE... Off | 00000000:00:04.0 Off | 0 |\n",
"| N/A 37C P0 27W / 250W | 0MiB / 16280MiB | 0% Default |\n",
2022-07-04 20:30:39 +00:00
"| | | N/A |\n",
"+-------------------------------+----------------------+----------------------+\n",
" \n",
"+-----------------------------------------------------------------------------+\n",
"| Processes: |\n",
"| GPU GI CI PID Type Process name GPU Memory |\n",
"| ID ID Usage |\n",
"|=============================================================================|\n",
"| No running processes found |\n",
"+-----------------------------------------------------------------------------+\n"
]
}
],
2022-06-28 00:58:17 +00:00
"source": [
2022-07-03 15:17:37 +00:00
"! pip install min-dalle\n",
"! nvidia-smi"
2022-06-28 00:58:17 +00:00
]
},
{
"cell_type": "markdown",
2022-06-30 15:25:24 +00:00
"metadata": {
"id": "kViq2dMbGDKt"
},
"source": [
"### Load Model"
2022-06-30 15:25:24 +00:00
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
2022-06-30 15:25:24 +00:00
},
"id": "8W-L2ICFGFup",
"outputId": "1ad581be-0649-431f-ebda-8fdac89e17e9"
},
"outputs": [
{
2022-07-03 22:40:27 +00:00
"output_type": "stream",
2022-07-04 14:21:12 +00:00
"name": "stdout",
"text": [
"initializing MinDalle\n",
2022-07-01 21:34:23 +00:00
"intializing TextTokenizer\n",
"initializing DalleBartEncoder\n",
"initializing DalleBartDecoder\n",
"initializing VQGanDetokenizer\n"
]
}
2022-06-30 15:25:24 +00:00
],
"source": [
2022-07-04 20:06:14 +00:00
"from PIL import Image\n",
"from IPython.display import update_display\n",
"import numpy\n",
2022-07-04 21:27:02 +00:00
"from math import log2\n",
"from min_dalle import MinDalle\n",
2022-06-30 15:25:24 +00:00
"\n",
"model = MinDalle(is_mega=True, is_reusable=True)"
]
},
2022-06-28 00:58:17 +00:00
{
"cell_type": "markdown",
2022-06-28 15:01:31 +00:00
"metadata": {
2022-06-28 15:05:59 +00:00
"id": "c52TV1GbBNgS"
},
"source": [
2022-07-02 18:54:18 +00:00
"### Generate Images\n",
"Note: reduce the grid size if you run out of GPU memory. 4x4 has been tested to work on T4 and P100 (with intermediate_image_count = 1)"
2022-06-28 15:05:59 +00:00
]
2022-06-28 00:58:17 +00:00
},
{
"cell_type": "code",
"execution_count": 5,
2022-06-28 00:58:17 +00:00
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
2022-07-04 20:30:39 +00:00
"height": 563
2022-06-28 15:05:59 +00:00
},
"id": "nQ0UG05dA4p2",
"outputId": "630f0fc7-4781-44fb-85fc-f9de95dcf235"
2022-06-28 00:58:17 +00:00
},
"outputs": [
{
2022-07-04 14:21:12 +00:00
"output_type": "display_data",
2022-06-28 00:58:17 +00:00
"data": {
"text/plain": [
"<PIL.Image.Image image mode=RGB size=512x512 at 0x7F56D8D401D0>"
2022-07-04 14:21:12 +00:00
],
"image/png": "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
2022-06-28 00:58:17 +00:00
},
2022-07-04 14:21:12 +00:00
"metadata": {}
2022-06-29 17:55:23 +00:00
},
{
2022-07-03 22:40:27 +00:00
"output_type": "stream",
2022-07-04 14:21:12 +00:00
"name": "stdout",
2022-06-29 17:55:23 +00:00
"text": [
"CPU times: user 33.5 s, sys: 556 ms, total: 34 s\n",
"Wall time: 34.8 s\n"
2022-06-29 17:55:23 +00:00
]
2022-06-28 00:58:17 +00:00
}
2022-06-28 15:05:59 +00:00
],
"source": [
2022-06-29 17:55:23 +00:00
"%%time\n",
"\n",
2022-07-03 22:40:27 +00:00
"text = \"Dali painting of WALL·E\" #@param {type:\"string\"}\n",
2022-07-04 20:06:14 +00:00
"grid_size = 3 #@param {type:\"integer\"}\n",
2022-07-04 12:05:55 +00:00
"seed = -1 #@param {type:\"integer\"}\n",
"intermediate_image_count = 8 #@param [\"1\", \"2\", \"4\", \"8\", \"16\"] {type:\"raw\"}\n",
2022-07-04 20:30:39 +00:00
"display_size = 512 #@param {type:\"integer\"}\n",
2022-07-04 20:06:14 +00:00
"\n",
"image_stream = model.generate_image_stream(\n",
2022-07-04 20:06:14 +00:00
" text,\n",
" seed,\n",
" grid_size,\n",
" log2(intermediate_image_count)\n",
")\n",
"\n",
"image_shape = (display_size, display_size, 3)\n",
"zero_image = Image.fromarray(numpy.zeros(image_shape, dtype=numpy.uint8))\n",
"display(zero_image, display_id=1)\n",
"\n",
"for image in image_stream:\n",
" image = image.resize((display_size, display_size))\n",
" update_display(image, display_id=1)"
2022-06-28 00:58:17 +00:00
]
}
],
"metadata": {
"accelerator": "GPU",
"colab": {
2022-06-28 15:05:59 +00:00
"collapsed_sections": [
"Zl_ZFisFApeh"
],
2022-06-30 15:25:24 +00:00
"name": "min-dalle",
2022-07-04 14:21:12 +00:00
"provenance": [],
"include_colab_link": true
2022-06-28 00:58:17 +00:00
},
"gpuClass": "standard",
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 0
2022-07-04 14:21:12 +00:00
}