Spaces:
Runtime error
Runtime error
chore: reduce size of notebooks
Browse filesFormer-commit-id: 4b1870193012ec35af398b3864eb37a43adf1e97
dev/notebooks/demo/CustomBARTv4b_model-generate.ipynb
CHANGED
|
@@ -1,566 +1,394 @@
|
|
| 1 |
{
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
"colab": {
|
| 6 |
-
|
| 7 |
-
"provenance": [],
|
| 8 |
-
"collapsed_sections": [],
|
| 9 |
-
"machine_shape": "hm"
|
| 10 |
-
},
|
| 11 |
-
"kernelspec": {
|
| 12 |
-
"name": "python3",
|
| 13 |
-
"display_name": "Python 3"
|
| 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 |
-
|
| 115 |
-
"metadata": {
|
| 116 |
-
"id": "M1wVkrpjU6zO"
|
| 117 |
-
},
|
| 118 |
-
"source": [
|
| 119 |
-
"%load_ext autoreload\n",
|
| 120 |
-
"%autoreload 2"
|
| 121 |
-
],
|
| 122 |
-
"execution_count": 2,
|
| 123 |
-
"outputs": []
|
| 124 |
-
},
|
| 125 |
-
{
|
| 126 |
-
"cell_type": "markdown",
|
| 127 |
-
"metadata": {
|
| 128 |
-
"id": "t47CH1H_IOT8"
|
| 129 |
-
},
|
| 130 |
-
"source": [
|
| 131 |
-
"# Custom BART Model"
|
| 132 |
-
]
|
| 133 |
-
},
|
| 134 |
-
{
|
| 135 |
-
"cell_type": "code",
|
| 136 |
-
"metadata": {
|
| 137 |
-
"id": "9jQnM6S2vCpn"
|
| 138 |
-
},
|
| 139 |
-
"source": [
|
| 140 |
-
"# TODO: set those args in a config file\n",
|
| 141 |
-
"OUTPUT_VOCAB_SIZE = 16384 + 1 # encoded image token space + 1 for bos\n",
|
| 142 |
-
"OUTPUT_LENGTH = 256 + 1 # number of encoded tokens + 1 for bos\n",
|
| 143 |
-
"BOS_TOKEN_ID = 16384\n",
|
| 144 |
-
"BASE_MODEL = 'facebook/bart-large'"
|
| 145 |
-
],
|
| 146 |
-
"execution_count": 3,
|
| 147 |
-
"outputs": []
|
| 148 |
-
},
|
| 149 |
-
{
|
| 150 |
-
"cell_type": "code",
|
| 151 |
-
"metadata": {
|
| 152 |
-
"id": "_eEaJVxAKpV5"
|
| 153 |
-
},
|
| 154 |
-
"source": [
|
| 155 |
-
"import jax\n",
|
| 156 |
-
"import flax.linen as nn\n",
|
| 157 |
-
"\n",
|
| 158 |
-
"from transformers.models.bart.modeling_flax_bart import *\n",
|
| 159 |
-
"from transformers import BartTokenizer, FlaxBartForConditionalGeneration\n",
|
| 160 |
-
"\n",
|
| 161 |
-
"class CustomFlaxBartModule(FlaxBartModule):\n",
|
| 162 |
-
" def setup(self):\n",
|
| 163 |
-
" # we keep shared to easily load pre-trained weights\n",
|
| 164 |
-
" self.shared = nn.Embed(\n",
|
| 165 |
-
" self.config.vocab_size,\n",
|
| 166 |
-
" self.config.d_model,\n",
|
| 167 |
-
" embedding_init=jax.nn.initializers.normal(self.config.init_std, self.dtype),\n",
|
| 168 |
-
" dtype=self.dtype,\n",
|
| 169 |
-
" )\n",
|
| 170 |
-
" # a separate embedding is used for the decoder\n",
|
| 171 |
-
" self.decoder_embed = nn.Embed(\n",
|
| 172 |
-
" OUTPUT_VOCAB_SIZE,\n",
|
| 173 |
-
" self.config.d_model,\n",
|
| 174 |
-
" embedding_init=jax.nn.initializers.normal(self.config.init_std, self.dtype),\n",
|
| 175 |
-
" dtype=self.dtype,\n",
|
| 176 |
-
" )\n",
|
| 177 |
-
" self.encoder = FlaxBartEncoder(self.config, dtype=self.dtype, embed_tokens=self.shared)\n",
|
| 178 |
-
"\n",
|
| 179 |
-
" # the decoder has a different config\n",
|
| 180 |
-
" decoder_config = BartConfig(self.config.to_dict())\n",
|
| 181 |
-
" decoder_config.max_position_embeddings = OUTPUT_LENGTH\n",
|
| 182 |
-
" decoder_config.vocab_size = OUTPUT_VOCAB_SIZE\n",
|
| 183 |
-
" self.decoder = FlaxBartDecoder(decoder_config, dtype=self.dtype, embed_tokens=self.decoder_embed)\n",
|
| 184 |
-
"\n",
|
| 185 |
-
"class CustomFlaxBartForConditionalGenerationModule(FlaxBartForConditionalGenerationModule):\n",
|
| 186 |
-
" def setup(self):\n",
|
| 187 |
-
" self.model = CustomFlaxBartModule(config=self.config, dtype=self.dtype)\n",
|
| 188 |
-
" self.lm_head = nn.Dense(\n",
|
| 189 |
-
" OUTPUT_VOCAB_SIZE,\n",
|
| 190 |
-
" use_bias=False,\n",
|
| 191 |
-
" dtype=self.dtype,\n",
|
| 192 |
-
" kernel_init=jax.nn.initializers.normal(self.config.init_std, self.dtype),\n",
|
| 193 |
-
" )\n",
|
| 194 |
-
" self.final_logits_bias = self.param(\"final_logits_bias\", self.bias_init, (1, OUTPUT_VOCAB_SIZE))\n",
|
| 195 |
-
"\n",
|
| 196 |
-
"class CustomFlaxBartForConditionalGeneration(FlaxBartForConditionalGeneration):\n",
|
| 197 |
-
" module_class = CustomFlaxBartForConditionalGenerationModule"
|
| 198 |
-
],
|
| 199 |
-
"execution_count": 4,
|
| 200 |
-
"outputs": []
|
| 201 |
-
},
|
| 202 |
-
{
|
| 203 |
-
"cell_type": "code",
|
| 204 |
-
"metadata": {
|
| 205 |
-
"id": "S7CP9Td9m2ge",
|
| 206 |
-
"colab": {
|
| 207 |
-
"base_uri": "https://localhost:8080/"
|
| 208 |
-
},
|
| 209 |
-
"outputId": "5638ef68-9c40-46f7-90ba-a4d05b61360d"
|
| 210 |
-
},
|
| 211 |
-
"source": [
|
| 212 |
-
"# load pre-trained model for encoder weights\n",
|
| 213 |
-
"base_model = FlaxBartForConditionalGeneration.from_pretrained(BASE_MODEL)"
|
| 214 |
-
],
|
| 215 |
-
"execution_count": 5,
|
| 216 |
-
"outputs": [
|
| 217 |
-
{
|
| 218 |
-
"output_type": "stream",
|
| 219 |
-
"text": [
|
| 220 |
-
"WARNING:absl:No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n"
|
| 221 |
-
],
|
| 222 |
-
"name": "stderr"
|
| 223 |
-
}
|
| 224 |
-
]
|
| 225 |
-
},
|
| 226 |
-
{
|
| 227 |
-
"cell_type": "code",
|
| 228 |
-
"metadata": {
|
| 229 |
-
"id": "6lmynR-poceH"
|
| 230 |
-
},
|
| 231 |
-
"source": [
|
| 232 |
-
"# set up our new model config\n",
|
| 233 |
-
"config = BartConfig.from_pretrained(BASE_MODEL)\n",
|
| 234 |
-
"config.tie_word_embeddings = False\n",
|
| 235 |
-
"config.decoder_start_token_id = BOS_TOKEN_ID\n",
|
| 236 |
-
"config.bos_token_id = BOS_TOKEN_ID # should not be used\n",
|
| 237 |
-
"config.pos_token_id = BOS_TOKEN_ID # should not be used\n",
|
| 238 |
-
"#config.eos_token_id = None # prevents generation from stopping until we reach max_length"
|
| 239 |
-
],
|
| 240 |
-
"execution_count": 6,
|
| 241 |
-
"outputs": []
|
| 242 |
-
},
|
| 243 |
-
{
|
| 244 |
-
"cell_type": "code",
|
| 245 |
-
"metadata": {
|
| 246 |
-
"id": "_6-XKK40oEfP"
|
| 247 |
-
},
|
| 248 |
-
"source": [
|
| 249 |
-
"# create our model and initialize it randomly\n",
|
| 250 |
-
"model = CustomFlaxBartForConditionalGeneration(config)"
|
| 251 |
-
],
|
| 252 |
-
"execution_count": 7,
|
| 253 |
-
"outputs": []
|
| 254 |
-
},
|
| 255 |
-
{
|
| 256 |
-
"cell_type": "code",
|
| 257 |
-
"metadata": {
|
| 258 |
-
"id": "-r_hZestr-NR"
|
| 259 |
-
},
|
| 260 |
-
"source": [
|
| 261 |
-
"# use pretrained weights\n",
|
| 262 |
-
"model.params['model']['encoder'] = base_model.params['model']['encoder']\n",
|
| 263 |
-
"model.params['model']['shared'] = base_model.params['model']['shared']"
|
| 264 |
-
],
|
| 265 |
-
"execution_count": 8,
|
| 266 |
-
"outputs": []
|
| 267 |
-
},
|
| 268 |
-
{
|
| 269 |
-
"cell_type": "code",
|
| 270 |
-
"metadata": {
|
| 271 |
-
"id": "5NEX8f62sVjx"
|
| 272 |
-
},
|
| 273 |
-
"source": [
|
| 274 |
-
"# no need for base_model anymore\n",
|
| 275 |
-
"del base_model"
|
| 276 |
-
],
|
| 277 |
-
"execution_count": 9,
|
| 278 |
-
"outputs": []
|
| 279 |
-
},
|
| 280 |
-
{
|
| 281 |
-
"cell_type": "code",
|
| 282 |
-
"metadata": {
|
| 283 |
-
"colab": {
|
| 284 |
-
"base_uri": "https://localhost:8080/"
|
| 285 |
-
},
|
| 286 |
-
"id": "Jz032w73nHEf",
|
| 287 |
-
"outputId": "994d8e85-bff7-480b-8b69-f69dedc15c49"
|
| 288 |
-
},
|
| 289 |
-
"source": [
|
| 290 |
-
"# we verify that the shape has not been modified\n",
|
| 291 |
-
"model.params['final_logits_bias'].shape"
|
| 292 |
-
],
|
| 293 |
-
"execution_count": 10,
|
| 294 |
-
"outputs": [
|
| 295 |
-
{
|
| 296 |
-
"output_type": "execute_result",
|
| 297 |
-
"data": {
|
| 298 |
-
"text/plain": [
|
| 299 |
-
"(1, 16385)"
|
| 300 |
-
]
|
| 301 |
-
},
|
| 302 |
-
"metadata": {
|
| 303 |
-
"tags": []
|
| 304 |
-
},
|
| 305 |
-
"execution_count": 10
|
| 306 |
-
}
|
| 307 |
-
]
|
| 308 |
-
},
|
| 309 |
-
{
|
| 310 |
-
"cell_type": "markdown",
|
| 311 |
-
"metadata": {
|
| 312 |
-
"id": "zLl24Ez5t7x1"
|
| 313 |
-
},
|
| 314 |
-
"source": [
|
| 315 |
-
"## Inference"
|
| 316 |
-
]
|
| 317 |
-
},
|
| 318 |
-
{
|
| 319 |
-
"cell_type": "code",
|
| 320 |
-
"metadata": {
|
| 321 |
-
"id": "XLLA2NK3uDQr"
|
| 322 |
-
},
|
| 323 |
-
"source": [
|
| 324 |
-
"tokenizer = BartTokenizer.from_pretrained(BASE_MODEL)"
|
| 325 |
-
],
|
| 326 |
-
"execution_count": 11,
|
| 327 |
-
"outputs": []
|
| 328 |
-
},
|
| 329 |
-
{
|
| 330 |
-
"cell_type": "code",
|
| 331 |
-
"metadata": {
|
| 332 |
-
"colab": {
|
| 333 |
-
"base_uri": "https://localhost:8080/"
|
| 334 |
-
},
|
| 335 |
-
"id": "Ntow53I_t81D",
|
| 336 |
-
"outputId": "59289cdd-1429-4720-cc87-88810c4b99ac"
|
| 337 |
-
},
|
| 338 |
-
"source": [
|
| 339 |
-
"text = \"My friends are cool but they eat too many carbs.\"\n",
|
| 340 |
-
"inputs = tokenizer(text, max_length=1024, return_tensors='jax')\n",
|
| 341 |
-
"encoder_outputs = model.encode(**inputs)"
|
| 342 |
-
],
|
| 343 |
-
"execution_count": 12,
|
| 344 |
-
"outputs": [
|
| 345 |
-
{
|
| 346 |
-
"output_type": "stream",
|
| 347 |
-
"text": [
|
| 348 |
-
"Truncation was not explicitly activated but `max_length` is provided a specific value, please use `truncation=True` to explicitly truncate examples to max length. Defaulting to 'longest_first' truncation strategy. If you encode pairs of sequences (GLUE-style) with the tokenizer you can select this strategy more precisely by providing a specific strategy to `truncation`.\n"
|
| 349 |
-
],
|
| 350 |
-
"name": "stderr"
|
| 351 |
-
}
|
| 352 |
-
]
|
| 353 |
},
|
| 354 |
-
|
| 355 |
-
|
| 356 |
-
|
| 357 |
-
|
| 358 |
-
|
| 359 |
-
|
| 360 |
-
|
| 361 |
-
|
| 362 |
-
|
| 363 |
-
|
| 364 |
-
|
| 365 |
-
|
| 366 |
-
|
| 367 |
-
|
| 368 |
-
|
| 369 |
-
|
| 370 |
-
|
| 371 |
-
|
| 372 |
-
|
| 373 |
-
|
| 374 |
-
|
| 375 |
-
|
| 376 |
-
|
| 377 |
-
|
| 378 |
-
|
| 379 |
-
|
| 380 |
-
|
| 381 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 382 |
},
|
| 383 |
-
|
| 384 |
-
|
| 385 |
-
|
| 386 |
-
|
| 387 |
-
|
| 388 |
-
|
| 389 |
-
|
| 390 |
-
|
| 391 |
-
|
| 392 |
-
|
| 393 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 394 |
},
|
| 395 |
-
|
| 396 |
-
|
| 397 |
-
|
| 398 |
-
|
| 399 |
-
|
| 400 |
-
|
| 401 |
-
|
| 402 |
-
|
| 403 |
-
|
| 404 |
-
|
| 405 |
-
|
| 406 |
-
|
| 407 |
-
|
| 408 |
-
|
| 409 |
-
|
| 410 |
-
|
| 411 |
-
"data": {
|
| 412 |
-
"text/plain": [
|
| 413 |
-
"FlaxCausalLMOutputWithCrossAttentions([('logits',\n",
|
| 414 |
-
" DeviceArray([[[ 0.5263986 , -2.0947676 , -0.18830685, ..., 0.7599884 ,\n",
|
| 415 |
-
" 0.6746795 , -1.0411576 ]]], dtype=float32))])"
|
| 416 |
-
]
|
| 417 |
-
},
|
| 418 |
-
"metadata": {
|
| 419 |
-
"tags": []
|
| 420 |
-
},
|
| 421 |
-
"execution_count": 15
|
| 422 |
-
}
|
| 423 |
-
]
|
| 424 |
},
|
| 425 |
-
|
| 426 |
-
|
| 427 |
-
|
| 428 |
-
|
| 429 |
-
|
| 430 |
-
|
| 431 |
-
|
| 432 |
-
|
| 433 |
-
|
| 434 |
-
|
| 435 |
-
|
| 436 |
-
|
| 437 |
-
|
| 438 |
-
|
| 439 |
-
|
| 440 |
-
|
| 441 |
-
|
| 442 |
-
|
| 443 |
-
|
| 444 |
-
|
| 445 |
-
|
| 446 |
-
|
| 447 |
-
|
| 448 |
-
|
| 449 |
-
|
| 450 |
-
|
| 451 |
-
|
| 452 |
},
|
| 453 |
-
|
| 454 |
-
|
| 455 |
-
|
| 456 |
-
|
| 457 |
-
|
| 458 |
-
|
| 459 |
-
|
| 460 |
-
|
| 461 |
-
|
| 462 |
-
|
| 463 |
-
|
| 464 |
-
|
| 465 |
-
|
| 466 |
-
|
| 467 |
-
{
|
| 468 |
-
"output_type": "execute_result",
|
| 469 |
-
"data": {
|
| 470 |
-
"text/plain": [
|
| 471 |
-
"DeviceArray([[12459]], dtype=int32)"
|
| 472 |
-
]
|
| 473 |
-
},
|
| 474 |
-
"metadata": {
|
| 475 |
-
"tags": []
|
| 476 |
-
},
|
| 477 |
-
"execution_count": 17
|
| 478 |
-
}
|
| 479 |
-
]
|
| 480 |
},
|
| 481 |
-
|
| 482 |
-
|
| 483 |
-
|
| 484 |
-
|
| 485 |
-
|
| 486 |
-
|
| 487 |
-
|
| 488 |
-
|
| 489 |
-
|
| 490 |
-
|
| 491 |
-
|
| 492 |
-
|
| 493 |
-
|
| 494 |
-
|
| 495 |
-
{
|
| 496 |
-
"output_type": "execute_result",
|
| 497 |
-
"data": {
|
| 498 |
-
"text/plain": [
|
| 499 |
-
"(16384, 2, 1)"
|
| 500 |
-
]
|
| 501 |
-
},
|
| 502 |
-
"metadata": {
|
| 503 |
-
"tags": []
|
| 504 |
-
},
|
| 505 |
-
"execution_count": 18
|
| 506 |
-
}
|
| 507 |
-
]
|
| 508 |
},
|
| 509 |
-
|
| 510 |
-
|
| 511 |
-
|
| 512 |
-
|
| 513 |
-
|
| 514 |
-
|
| 515 |
-
|
| 516 |
-
|
| 517 |
-
|
| 518 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 519 |
},
|
| 520 |
-
|
| 521 |
-
|
| 522 |
-
|
| 523 |
-
|
| 524 |
-
|
| 525 |
-
|
| 526 |
-
|
| 527 |
-
|
| 528 |
-
|
| 529 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 530 |
},
|
| 531 |
-
|
| 532 |
-
|
| 533 |
-
|
| 534 |
-
|
| 535 |
-
|
| 536 |
-
|
| 537 |
-
|
| 538 |
-
|
| 539 |
-
|
| 540 |
-
|
| 541 |
-
|
| 542 |
-
|
| 543 |
-
|
| 544 |
-
|
| 545 |
-
|
| 546 |
-
|
| 547 |
-
|
| 548 |
-
|
| 549 |
-
|
| 550 |
-
|
| 551 |
-
|
| 552 |
-
|
| 553 |
-
|
| 554 |
-
|
| 555 |
-
|
| 556 |
-
|
| 557 |
-
|
| 558 |
-
|
| 559 |
-
|
| 560 |
-
|
| 561 |
-
|
| 562 |
-
|
| 563 |
-
|
| 564 |
-
|
| 565 |
-
|
|
|
|
|
|
|
| 566 |
}
|
|
|
|
| 1 |
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "markdown",
|
| 5 |
+
"metadata": {
|
| 6 |
+
"id": "ewer-Q-0w2xA"
|
| 7 |
+
},
|
| 8 |
+
"source": [
|
| 9 |
+
"# Installation"
|
| 10 |
+
]
|
| 11 |
+
},
|
| 12 |
+
{
|
| 13 |
+
"cell_type": "code",
|
| 14 |
+
"execution_count": null,
|
| 15 |
+
"metadata": {
|
| 16 |
"colab": {
|
| 17 |
+
"base_uri": "https://localhost:8080/"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
},
|
| 19 |
+
"id": "NpsF9ipLLl2s",
|
| 20 |
+
"outputId": "10bf54aa-b89d-4e42-9777-bc97b00a5f32"
|
| 21 |
+
},
|
| 22 |
+
"outputs": [],
|
| 23 |
+
"source": [
|
| 24 |
+
"!pip install git+https://github.com/huggingface/transformers/\n",
|
| 25 |
+
"!pip install git+https://github.com/google/flax"
|
| 26 |
+
]
|
| 27 |
},
|
| 28 |
+
{
|
| 29 |
+
"cell_type": "code",
|
| 30 |
+
"execution_count": null,
|
| 31 |
+
"metadata": {
|
| 32 |
+
"id": "M1wVkrpjU6zO"
|
| 33 |
+
},
|
| 34 |
+
"outputs": [],
|
| 35 |
+
"source": [
|
| 36 |
+
"%load_ext autoreload\n",
|
| 37 |
+
"%autoreload 2"
|
| 38 |
+
]
|
| 39 |
+
},
|
| 40 |
+
{
|
| 41 |
+
"cell_type": "markdown",
|
| 42 |
+
"metadata": {
|
| 43 |
+
"id": "t47CH1H_IOT8"
|
| 44 |
+
},
|
| 45 |
+
"source": [
|
| 46 |
+
"# Custom BART Model"
|
| 47 |
+
]
|
| 48 |
+
},
|
| 49 |
+
{
|
| 50 |
+
"cell_type": "code",
|
| 51 |
+
"execution_count": null,
|
| 52 |
+
"metadata": {
|
| 53 |
+
"id": "9jQnM6S2vCpn"
|
| 54 |
+
},
|
| 55 |
+
"outputs": [],
|
| 56 |
+
"source": [
|
| 57 |
+
"# TODO: set those args in a config file\n",
|
| 58 |
+
"OUTPUT_VOCAB_SIZE = 16384 + 1 # encoded image token space + 1 for bos\n",
|
| 59 |
+
"OUTPUT_LENGTH = 256 + 1 # number of encoded tokens + 1 for bos\n",
|
| 60 |
+
"BOS_TOKEN_ID = 16384\n",
|
| 61 |
+
"BASE_MODEL = 'facebook/bart-large'"
|
| 62 |
+
]
|
| 63 |
+
},
|
| 64 |
+
{
|
| 65 |
+
"cell_type": "code",
|
| 66 |
+
"execution_count": null,
|
| 67 |
+
"metadata": {
|
| 68 |
+
"id": "_eEaJVxAKpV5"
|
| 69 |
+
},
|
| 70 |
+
"outputs": [],
|
| 71 |
+
"source": [
|
| 72 |
+
"import jax\n",
|
| 73 |
+
"import flax.linen as nn\n",
|
| 74 |
+
"\n",
|
| 75 |
+
"from transformers.models.bart.modeling_flax_bart import *\n",
|
| 76 |
+
"from transformers import BartTokenizer, FlaxBartForConditionalGeneration\n",
|
| 77 |
+
"\n",
|
| 78 |
+
"class CustomFlaxBartModule(FlaxBartModule):\n",
|
| 79 |
+
" def setup(self):\n",
|
| 80 |
+
" # we keep shared to easily load pre-trained weights\n",
|
| 81 |
+
" self.shared = nn.Embed(\n",
|
| 82 |
+
" self.config.vocab_size,\n",
|
| 83 |
+
" self.config.d_model,\n",
|
| 84 |
+
" embedding_init=jax.nn.initializers.normal(self.config.init_std, self.dtype),\n",
|
| 85 |
+
" dtype=self.dtype,\n",
|
| 86 |
+
" )\n",
|
| 87 |
+
" # a separate embedding is used for the decoder\n",
|
| 88 |
+
" self.decoder_embed = nn.Embed(\n",
|
| 89 |
+
" OUTPUT_VOCAB_SIZE,\n",
|
| 90 |
+
" self.config.d_model,\n",
|
| 91 |
+
" embedding_init=jax.nn.initializers.normal(self.config.init_std, self.dtype),\n",
|
| 92 |
+
" dtype=self.dtype,\n",
|
| 93 |
+
" )\n",
|
| 94 |
+
" self.encoder = FlaxBartEncoder(self.config, dtype=self.dtype, embed_tokens=self.shared)\n",
|
| 95 |
+
"\n",
|
| 96 |
+
" # the decoder has a different config\n",
|
| 97 |
+
" decoder_config = BartConfig(self.config.to_dict())\n",
|
| 98 |
+
" decoder_config.max_position_embeddings = OUTPUT_LENGTH\n",
|
| 99 |
+
" decoder_config.vocab_size = OUTPUT_VOCAB_SIZE\n",
|
| 100 |
+
" self.decoder = FlaxBartDecoder(decoder_config, dtype=self.dtype, embed_tokens=self.decoder_embed)\n",
|
| 101 |
+
"\n",
|
| 102 |
+
"class CustomFlaxBartForConditionalGenerationModule(FlaxBartForConditionalGenerationModule):\n",
|
| 103 |
+
" def setup(self):\n",
|
| 104 |
+
" self.model = CustomFlaxBartModule(config=self.config, dtype=self.dtype)\n",
|
| 105 |
+
" self.lm_head = nn.Dense(\n",
|
| 106 |
+
" OUTPUT_VOCAB_SIZE,\n",
|
| 107 |
+
" use_bias=False,\n",
|
| 108 |
+
" dtype=self.dtype,\n",
|
| 109 |
+
" kernel_init=jax.nn.initializers.normal(self.config.init_std, self.dtype),\n",
|
| 110 |
+
" )\n",
|
| 111 |
+
" self.final_logits_bias = self.param(\"final_logits_bias\", self.bias_init, (1, OUTPUT_VOCAB_SIZE))\n",
|
| 112 |
+
"\n",
|
| 113 |
+
"class CustomFlaxBartForConditionalGeneration(FlaxBartForConditionalGeneration):\n",
|
| 114 |
+
" module_class = CustomFlaxBartForConditionalGenerationModule"
|
| 115 |
+
]
|
| 116 |
+
},
|
| 117 |
+
{
|
| 118 |
+
"cell_type": "code",
|
| 119 |
+
"execution_count": null,
|
| 120 |
+
"metadata": {
|
| 121 |
+
"colab": {
|
| 122 |
+
"base_uri": "https://localhost:8080/"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 123 |
},
|
| 124 |
+
"id": "S7CP9Td9m2ge",
|
| 125 |
+
"outputId": "5638ef68-9c40-46f7-90ba-a4d05b61360d"
|
| 126 |
+
},
|
| 127 |
+
"outputs": [],
|
| 128 |
+
"source": [
|
| 129 |
+
"# load pre-trained model for encoder weights\n",
|
| 130 |
+
"base_model = FlaxBartForConditionalGeneration.from_pretrained(BASE_MODEL)"
|
| 131 |
+
]
|
| 132 |
+
},
|
| 133 |
+
{
|
| 134 |
+
"cell_type": "code",
|
| 135 |
+
"execution_count": null,
|
| 136 |
+
"metadata": {
|
| 137 |
+
"id": "6lmynR-poceH"
|
| 138 |
+
},
|
| 139 |
+
"outputs": [],
|
| 140 |
+
"source": [
|
| 141 |
+
"# set up our new model config\n",
|
| 142 |
+
"config = BartConfig.from_pretrained(BASE_MODEL)\n",
|
| 143 |
+
"config.tie_word_embeddings = False\n",
|
| 144 |
+
"config.decoder_start_token_id = BOS_TOKEN_ID\n",
|
| 145 |
+
"config.bos_token_id = BOS_TOKEN_ID # should not be used\n",
|
| 146 |
+
"config.pos_token_id = BOS_TOKEN_ID # should not be used\n",
|
| 147 |
+
"#config.eos_token_id = None # prevents generation from stopping until we reach max_length"
|
| 148 |
+
]
|
| 149 |
+
},
|
| 150 |
+
{
|
| 151 |
+
"cell_type": "code",
|
| 152 |
+
"execution_count": null,
|
| 153 |
+
"metadata": {
|
| 154 |
+
"id": "_6-XKK40oEfP"
|
| 155 |
+
},
|
| 156 |
+
"outputs": [],
|
| 157 |
+
"source": [
|
| 158 |
+
"# create our model and initialize it randomly\n",
|
| 159 |
+
"model = CustomFlaxBartForConditionalGeneration(config)"
|
| 160 |
+
]
|
| 161 |
+
},
|
| 162 |
+
{
|
| 163 |
+
"cell_type": "code",
|
| 164 |
+
"execution_count": null,
|
| 165 |
+
"metadata": {
|
| 166 |
+
"id": "-r_hZestr-NR"
|
| 167 |
+
},
|
| 168 |
+
"outputs": [],
|
| 169 |
+
"source": [
|
| 170 |
+
"# use pretrained weights\n",
|
| 171 |
+
"model.params['model']['encoder'] = base_model.params['model']['encoder']\n",
|
| 172 |
+
"model.params['model']['shared'] = base_model.params['model']['shared']"
|
| 173 |
+
]
|
| 174 |
+
},
|
| 175 |
+
{
|
| 176 |
+
"cell_type": "code",
|
| 177 |
+
"execution_count": null,
|
| 178 |
+
"metadata": {
|
| 179 |
+
"id": "5NEX8f62sVjx"
|
| 180 |
+
},
|
| 181 |
+
"outputs": [],
|
| 182 |
+
"source": [
|
| 183 |
+
"# no need for base_model anymore\n",
|
| 184 |
+
"del base_model"
|
| 185 |
+
]
|
| 186 |
+
},
|
| 187 |
+
{
|
| 188 |
+
"cell_type": "code",
|
| 189 |
+
"execution_count": null,
|
| 190 |
+
"metadata": {
|
| 191 |
+
"colab": {
|
| 192 |
+
"base_uri": "https://localhost:8080/"
|
| 193 |
},
|
| 194 |
+
"id": "Jz032w73nHEf",
|
| 195 |
+
"outputId": "994d8e85-bff7-480b-8b69-f69dedc15c49"
|
| 196 |
+
},
|
| 197 |
+
"outputs": [],
|
| 198 |
+
"source": [
|
| 199 |
+
"# we verify that the shape has not been modified\n",
|
| 200 |
+
"model.params['final_logits_bias'].shape"
|
| 201 |
+
]
|
| 202 |
+
},
|
| 203 |
+
{
|
| 204 |
+
"cell_type": "markdown",
|
| 205 |
+
"metadata": {
|
| 206 |
+
"id": "zLl24Ez5t7x1"
|
| 207 |
+
},
|
| 208 |
+
"source": [
|
| 209 |
+
"## Inference"
|
| 210 |
+
]
|
| 211 |
+
},
|
| 212 |
+
{
|
| 213 |
+
"cell_type": "code",
|
| 214 |
+
"execution_count": null,
|
| 215 |
+
"metadata": {
|
| 216 |
+
"id": "XLLA2NK3uDQr"
|
| 217 |
+
},
|
| 218 |
+
"outputs": [],
|
| 219 |
+
"source": [
|
| 220 |
+
"tokenizer = BartTokenizer.from_pretrained(BASE_MODEL)"
|
| 221 |
+
]
|
| 222 |
+
},
|
| 223 |
+
{
|
| 224 |
+
"cell_type": "code",
|
| 225 |
+
"execution_count": null,
|
| 226 |
+
"metadata": {
|
| 227 |
+
"colab": {
|
| 228 |
+
"base_uri": "https://localhost:8080/"
|
| 229 |
},
|
| 230 |
+
"id": "Ntow53I_t81D",
|
| 231 |
+
"outputId": "59289cdd-1429-4720-cc87-88810c4b99ac"
|
| 232 |
+
},
|
| 233 |
+
"outputs": [],
|
| 234 |
+
"source": [
|
| 235 |
+
"text = \"My friends are cool but they eat too many carbs.\"\n",
|
| 236 |
+
"inputs = tokenizer(text, max_length=1024, return_tensors='jax')\n",
|
| 237 |
+
"encoder_outputs = model.encode(**inputs)"
|
| 238 |
+
]
|
| 239 |
+
},
|
| 240 |
+
{
|
| 241 |
+
"cell_type": "code",
|
| 242 |
+
"execution_count": null,
|
| 243 |
+
"metadata": {
|
| 244 |
+
"colab": {
|
| 245 |
+
"base_uri": "https://localhost:8080/"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 246 |
},
|
| 247 |
+
"id": "vcRNJnJ_uJOJ",
|
| 248 |
+
"outputId": "025afd54-7908-4a9c-fb59-e40bd3458711"
|
| 249 |
+
},
|
| 250 |
+
"outputs": [],
|
| 251 |
+
"source": [
|
| 252 |
+
"decoder_start_token_id = model.config.decoder_start_token_id\n",
|
| 253 |
+
"decoder_start_token_id"
|
| 254 |
+
]
|
| 255 |
+
},
|
| 256 |
+
{
|
| 257 |
+
"cell_type": "code",
|
| 258 |
+
"execution_count": null,
|
| 259 |
+
"metadata": {
|
| 260 |
+
"id": "6QWmEwL_uMld"
|
| 261 |
+
},
|
| 262 |
+
"outputs": [],
|
| 263 |
+
"source": [
|
| 264 |
+
"decoder_input_ids = jnp.ones((inputs.input_ids.shape[0], 1), dtype=\"i4\") * decoder_start_token_id\n",
|
| 265 |
+
"outputs = model.decode(decoder_input_ids, encoder_outputs)"
|
| 266 |
+
]
|
| 267 |
+
},
|
| 268 |
+
{
|
| 269 |
+
"cell_type": "code",
|
| 270 |
+
"execution_count": null,
|
| 271 |
+
"metadata": {
|
| 272 |
+
"colab": {
|
| 273 |
+
"base_uri": "https://localhost:8080/"
|
| 274 |
},
|
| 275 |
+
"id": "c_ys3yWBothF",
|
| 276 |
+
"outputId": "40d4d584-e0a8-44cb-bbea-0ffa38d50a53"
|
| 277 |
+
},
|
| 278 |
+
"outputs": [],
|
| 279 |
+
"source": [
|
| 280 |
+
"outputs"
|
| 281 |
+
]
|
| 282 |
+
},
|
| 283 |
+
{
|
| 284 |
+
"cell_type": "code",
|
| 285 |
+
"execution_count": null,
|
| 286 |
+
"metadata": {
|
| 287 |
+
"colab": {
|
| 288 |
+
"base_uri": "https://localhost:8080/"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 289 |
},
|
| 290 |
+
"id": "O6s0wtB_uTC_",
|
| 291 |
+
"outputId": "bc0e9e80-e346-4e99-d28e-3f658eda1f66"
|
| 292 |
+
},
|
| 293 |
+
"outputs": [],
|
| 294 |
+
"source": [
|
| 295 |
+
"outputs.logits.shape"
|
| 296 |
+
]
|
| 297 |
+
},
|
| 298 |
+
{
|
| 299 |
+
"cell_type": "code",
|
| 300 |
+
"execution_count": null,
|
| 301 |
+
"metadata": {
|
| 302 |
+
"colab": {
|
| 303 |
+
"base_uri": "https://localhost:8080/"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 304 |
},
|
| 305 |
+
"id": "ELzemGP3uBzy",
|
| 306 |
+
"outputId": "dc12f98a-1ccf-450d-ba2a-9c29d7d14885"
|
| 307 |
+
},
|
| 308 |
+
"outputs": [],
|
| 309 |
+
"source": [
|
| 310 |
+
"outputs.logits.argmax(axis=-1)"
|
| 311 |
+
]
|
| 312 |
+
},
|
| 313 |
+
{
|
| 314 |
+
"cell_type": "code",
|
| 315 |
+
"execution_count": null,
|
| 316 |
+
"metadata": {
|
| 317 |
+
"colab": {
|
| 318 |
+
"base_uri": "https://localhost:8080/"
|
| 319 |
},
|
| 320 |
+
"id": "fQjikkGEunpx",
|
| 321 |
+
"outputId": "3dba0209-ad4e-4069-be38-6c599c677ef1"
|
| 322 |
+
},
|
| 323 |
+
"outputs": [],
|
| 324 |
+
"source": [
|
| 325 |
+
"model.config.bos_token_id, model.config.eos_token_id, model.config.pad_token_id"
|
| 326 |
+
]
|
| 327 |
+
},
|
| 328 |
+
{
|
| 329 |
+
"cell_type": "code",
|
| 330 |
+
"execution_count": null,
|
| 331 |
+
"metadata": {
|
| 332 |
+
"id": "P32mJJSbrU1F"
|
| 333 |
+
},
|
| 334 |
+
"outputs": [],
|
| 335 |
+
"source": [
|
| 336 |
+
"input_ids_test = tokenizer.encode('I enjoy walking with my cute dog', return_tensors='jax')"
|
| 337 |
+
]
|
| 338 |
+
},
|
| 339 |
+
{
|
| 340 |
+
"cell_type": "code",
|
| 341 |
+
"execution_count": null,
|
| 342 |
+
"metadata": {
|
| 343 |
+
"id": "C7cHbIHruELT"
|
| 344 |
+
},
|
| 345 |
+
"outputs": [],
|
| 346 |
+
"source": [
|
| 347 |
+
"greedy_output = model.generate(input_ids_test, max_length=50)"
|
| 348 |
+
]
|
| 349 |
+
},
|
| 350 |
+
{
|
| 351 |
+
"cell_type": "code",
|
| 352 |
+
"execution_count": null,
|
| 353 |
+
"metadata": {
|
| 354 |
+
"colab": {
|
| 355 |
+
"base_uri": "https://localhost:8080/"
|
| 356 |
},
|
| 357 |
+
"id": "jYugh9cOuwc9",
|
| 358 |
+
"outputId": "19c3a2ee-e7bc-4f1f-9c86-06bd7337b537"
|
| 359 |
+
},
|
| 360 |
+
"outputs": [],
|
| 361 |
+
"source": [
|
| 362 |
+
"greedy_output[0]"
|
| 363 |
+
]
|
| 364 |
+
}
|
| 365 |
+
],
|
| 366 |
+
"metadata": {
|
| 367 |
+
"accelerator": "TPU",
|
| 368 |
+
"colab": {
|
| 369 |
+
"collapsed_sections": [],
|
| 370 |
+
"machine_shape": "hm",
|
| 371 |
+
"name": "CustomBARTv4b-model-generate.ipynb",
|
| 372 |
+
"provenance": []
|
| 373 |
+
},
|
| 374 |
+
"kernelspec": {
|
| 375 |
+
"display_name": "Python 3 (ipykernel)",
|
| 376 |
+
"language": "python",
|
| 377 |
+
"name": "python3"
|
| 378 |
+
},
|
| 379 |
+
"language_info": {
|
| 380 |
+
"codemirror_mode": {
|
| 381 |
+
"name": "ipython",
|
| 382 |
+
"version": 3
|
| 383 |
+
},
|
| 384 |
+
"file_extension": ".py",
|
| 385 |
+
"mimetype": "text/x-python",
|
| 386 |
+
"name": "python",
|
| 387 |
+
"nbconvert_exporter": "python",
|
| 388 |
+
"pygments_lexer": "ipython3",
|
| 389 |
+
"version": "3.8.5"
|
| 390 |
+
}
|
| 391 |
+
},
|
| 392 |
+
"nbformat": 4,
|
| 393 |
+
"nbformat_minor": 4
|
| 394 |
}
|
dev/notebooks/demo/demo_notebook.ipynb
CHANGED
|
@@ -27,7 +27,7 @@
|
|
| 27 |
},
|
| 28 |
{
|
| 29 |
"cell_type": "code",
|
| 30 |
-
"execution_count":
|
| 31 |
"metadata": {
|
| 32 |
"id": "M1wVkrpjU6zO"
|
| 33 |
},
|
|
@@ -39,17 +39,9 @@
|
|
| 39 |
},
|
| 40 |
{
|
| 41 |
"cell_type": "code",
|
| 42 |
-
"execution_count":
|
| 43 |
"metadata": {},
|
| 44 |
-
"outputs": [
|
| 45 |
-
{
|
| 46 |
-
"name": "stdout",
|
| 47 |
-
"output_type": "stream",
|
| 48 |
-
"text": [
|
| 49 |
-
"/home/tmabraham/vqgan-jax\n"
|
| 50 |
-
]
|
| 51 |
-
}
|
| 52 |
-
],
|
| 53 |
"source": [
|
| 54 |
"%cd ../../vqgan-jax"
|
| 55 |
]
|
|
@@ -65,7 +57,7 @@
|
|
| 65 |
},
|
| 66 |
{
|
| 67 |
"cell_type": "code",
|
| 68 |
-
"execution_count":
|
| 69 |
"metadata": {
|
| 70 |
"id": "9jQnM6S2vCpn"
|
| 71 |
},
|
|
@@ -80,7 +72,7 @@
|
|
| 80 |
},
|
| 81 |
{
|
| 82 |
"cell_type": "code",
|
| 83 |
-
"execution_count":
|
| 84 |
"metadata": {
|
| 85 |
"id": "_eEaJVxAKpV5"
|
| 86 |
},
|
|
@@ -133,44 +125,11 @@
|
|
| 133 |
},
|
| 134 |
{
|
| 135 |
"cell_type": "code",
|
| 136 |
-
"execution_count":
|
| 137 |
"metadata": {
|
| 138 |
"scrolled": true
|
| 139 |
},
|
| 140 |
-
"outputs": [
|
| 141 |
-
{
|
| 142 |
-
"name": "stderr",
|
| 143 |
-
"output_type": "stream",
|
| 144 |
-
"text": [
|
| 145 |
-
"\u001b[34m\u001b[1mwandb\u001b[0m: Currently logged in as: \u001b[33mtmabraham\u001b[0m (use `wandb login --relogin` to force relogin)\n"
|
| 146 |
-
]
|
| 147 |
-
},
|
| 148 |
-
{
|
| 149 |
-
"data": {
|
| 150 |
-
"text/html": [
|
| 151 |
-
"\n",
|
| 152 |
-
" Tracking run with wandb version 0.10.33<br/>\n",
|
| 153 |
-
" Syncing run <strong style=\"color:#cdcd00\">rare-night-7</strong> to <a href=\"https://wandb.ai\" target=\"_blank\">Weights & Biases</a> <a href=\"https://docs.wandb.com/integrations/jupyter.html\" target=\"_blank\">(Documentation)</a>.<br/>\n",
|
| 154 |
-
" Project page: <a href=\"https://wandb.ai/tmabraham/vqgan-jax\" target=\"_blank\">https://wandb.ai/tmabraham/vqgan-jax</a><br/>\n",
|
| 155 |
-
" Run page: <a href=\"https://wandb.ai/tmabraham/vqgan-jax/runs/qzxavce8\" target=\"_blank\">https://wandb.ai/tmabraham/vqgan-jax/runs/qzxavce8</a><br/>\n",
|
| 156 |
-
" Run data is saved locally in <code>/home/tmabraham/vqgan-jax/wandb/run-20210715_075019-qzxavce8</code><br/><br/>\n",
|
| 157 |
-
" "
|
| 158 |
-
],
|
| 159 |
-
"text/plain": [
|
| 160 |
-
"<IPython.core.display.HTML object>"
|
| 161 |
-
]
|
| 162 |
-
},
|
| 163 |
-
"metadata": {},
|
| 164 |
-
"output_type": "display_data"
|
| 165 |
-
},
|
| 166 |
-
{
|
| 167 |
-
"name": "stderr",
|
| 168 |
-
"output_type": "stream",
|
| 169 |
-
"text": [
|
| 170 |
-
"\u001b[34m\u001b[1mwandb\u001b[0m: Downloading large artifact model-1ef8yxby:latest, 1674.97MB. 2 files... Done. 0:0:0\n"
|
| 171 |
-
]
|
| 172 |
-
}
|
| 173 |
-
],
|
| 174 |
"source": [
|
| 175 |
"import wandb\n",
|
| 176 |
"run = wandb.init()\n",
|
|
@@ -180,24 +139,12 @@
|
|
| 180 |
},
|
| 181 |
{
|
| 182 |
"cell_type": "code",
|
| 183 |
-
"execution_count":
|
| 184 |
"metadata": {
|
| 185 |
"id": "_6-XKK40oEfP",
|
| 186 |
"scrolled": true
|
| 187 |
},
|
| 188 |
-
"outputs": [
|
| 189 |
-
{
|
| 190 |
-
"name": "stderr",
|
| 191 |
-
"output_type": "stream",
|
| 192 |
-
"text": [
|
| 193 |
-
"/home/tmabraham/dalle-mini/src/transformers/src/transformers/models/bart/configuration_bart.py:180: UserWarning: Please make sure the config includes `forced_bos_token_id=16384` in future versions.The config can simply be saved and uploaded again to be fixed.\n",
|
| 194 |
-
" warnings.warn(\n",
|
| 195 |
-
"INFO:absl:Starting the local TPU driver.\n",
|
| 196 |
-
"INFO:absl:Unable to initialize backend 'tpu_driver': Not found: Unable to find driver in registry given worker: local://\n",
|
| 197 |
-
"INFO:absl:Unable to initialize backend 'gpu': Not found: Could not find registered platform with name: \"cuda\". Available platform names are: TPU Interpreter Host\n"
|
| 198 |
-
]
|
| 199 |
-
}
|
| 200 |
-
],
|
| 201 |
"source": [
|
| 202 |
"# create our model and initialize it randomly\n",
|
| 203 |
"model = CustomFlaxBartForConditionalGeneration.from_pretrained(artifact_dir)"
|
|
@@ -205,7 +152,7 @@
|
|
| 205 |
},
|
| 206 |
{
|
| 207 |
"cell_type": "code",
|
| 208 |
-
"execution_count":
|
| 209 |
"metadata": {},
|
| 210 |
"outputs": [],
|
| 211 |
"source": [
|
|
@@ -214,7 +161,7 @@
|
|
| 214 |
},
|
| 215 |
{
|
| 216 |
"cell_type": "code",
|
| 217 |
-
"execution_count":
|
| 218 |
"metadata": {
|
| 219 |
"colab": {
|
| 220 |
"base_uri": "https://localhost:8080/"
|
|
@@ -222,18 +169,7 @@
|
|
| 222 |
"id": "Jz032w73nHEf",
|
| 223 |
"outputId": "994d8e85-bff7-480b-8b69-f69dedc15c49"
|
| 224 |
},
|
| 225 |
-
"outputs": [
|
| 226 |
-
{
|
| 227 |
-
"data": {
|
| 228 |
-
"text/plain": [
|
| 229 |
-
"(1, 16385)"
|
| 230 |
-
]
|
| 231 |
-
},
|
| 232 |
-
"execution_count": 8,
|
| 233 |
-
"metadata": {},
|
| 234 |
-
"output_type": "execute_result"
|
| 235 |
-
}
|
| 236 |
-
],
|
| 237 |
"source": [
|
| 238 |
"# we verify that the shape has not been modified\n",
|
| 239 |
"model.params['final_logits_bias'].shape"
|
|
@@ -250,7 +186,7 @@
|
|
| 250 |
},
|
| 251 |
{
|
| 252 |
"cell_type": "code",
|
| 253 |
-
"execution_count":
|
| 254 |
"metadata": {
|
| 255 |
"id": "XLLA2NK3uDQr"
|
| 256 |
},
|
|
@@ -261,7 +197,7 @@
|
|
| 261 |
},
|
| 262 |
{
|
| 263 |
"cell_type": "code",
|
| 264 |
-
"execution_count":
|
| 265 |
"metadata": {},
|
| 266 |
"outputs": [],
|
| 267 |
"source": [
|
|
@@ -270,7 +206,7 @@
|
|
| 270 |
},
|
| 271 |
{
|
| 272 |
"cell_type": "code",
|
| 273 |
-
"execution_count":
|
| 274 |
"metadata": {
|
| 275 |
"id": "P32mJJSbrU1F"
|
| 276 |
},
|
|
@@ -281,49 +217,16 @@
|
|
| 281 |
},
|
| 282 |
{
|
| 283 |
"cell_type": "code",
|
| 284 |
-
"execution_count":
|
| 285 |
"metadata": {},
|
| 286 |
-
"outputs": [
|
| 287 |
-
{
|
| 288 |
-
"data": {
|
| 289 |
-
"text/plain": [
|
| 290 |
-
"{'input_ids': DeviceArray([[ 0, 100, 2254, 3051, 19, 127, 11962, 2335,\n",
|
| 291 |
-
" 2],\n",
|
| 292 |
-
" [ 0, 100, 2254, 3051, 19, 127, 11962, 2335,\n",
|
| 293 |
-
" 2],\n",
|
| 294 |
-
" [ 0, 100, 2254, 3051, 19, 127, 11962, 2335,\n",
|
| 295 |
-
" 2],\n",
|
| 296 |
-
" [ 0, 100, 2254, 3051, 19, 127, 11962, 2335,\n",
|
| 297 |
-
" 2],\n",
|
| 298 |
-
" [ 0, 100, 2254, 3051, 19, 127, 11962, 2335,\n",
|
| 299 |
-
" 2],\n",
|
| 300 |
-
" [ 0, 100, 2254, 3051, 19, 127, 11962, 2335,\n",
|
| 301 |
-
" 2],\n",
|
| 302 |
-
" [ 0, 100, 2254, 3051, 19, 127, 11962, 2335,\n",
|
| 303 |
-
" 2],\n",
|
| 304 |
-
" [ 0, 100, 2254, 3051, 19, 127, 11962, 2335,\n",
|
| 305 |
-
" 2]], dtype=int32), 'attention_mask': DeviceArray([[1, 1, 1, 1, 1, 1, 1, 1, 1],\n",
|
| 306 |
-
" [1, 1, 1, 1, 1, 1, 1, 1, 1],\n",
|
| 307 |
-
" [1, 1, 1, 1, 1, 1, 1, 1, 1],\n",
|
| 308 |
-
" [1, 1, 1, 1, 1, 1, 1, 1, 1],\n",
|
| 309 |
-
" [1, 1, 1, 1, 1, 1, 1, 1, 1],\n",
|
| 310 |
-
" [1, 1, 1, 1, 1, 1, 1, 1, 1],\n",
|
| 311 |
-
" [1, 1, 1, 1, 1, 1, 1, 1, 1],\n",
|
| 312 |
-
" [1, 1, 1, 1, 1, 1, 1, 1, 1]], dtype=int32)}"
|
| 313 |
-
]
|
| 314 |
-
},
|
| 315 |
-
"execution_count": 12,
|
| 316 |
-
"metadata": {},
|
| 317 |
-
"output_type": "execute_result"
|
| 318 |
-
}
|
| 319 |
-
],
|
| 320 |
"source": [
|
| 321 |
"input_ids_test"
|
| 322 |
]
|
| 323 |
},
|
| 324 |
{
|
| 325 |
"cell_type": "code",
|
| 326 |
-
"execution_count":
|
| 327 |
"metadata": {
|
| 328 |
"id": "C7cHbIHruELT"
|
| 329 |
},
|
|
@@ -334,27 +237,16 @@
|
|
| 334 |
},
|
| 335 |
{
|
| 336 |
"cell_type": "code",
|
| 337 |
-
"execution_count":
|
| 338 |
"metadata": {},
|
| 339 |
-
"outputs": [
|
| 340 |
-
{
|
| 341 |
-
"data": {
|
| 342 |
-
"text/plain": [
|
| 343 |
-
"(8, 257)"
|
| 344 |
-
]
|
| 345 |
-
},
|
| 346 |
-
"execution_count": 14,
|
| 347 |
-
"metadata": {},
|
| 348 |
-
"output_type": "execute_result"
|
| 349 |
-
}
|
| 350 |
-
],
|
| 351 |
"source": [
|
| 352 |
"greedy_output[0].shape"
|
| 353 |
]
|
| 354 |
},
|
| 355 |
{
|
| 356 |
"cell_type": "code",
|
| 357 |
-
"execution_count":
|
| 358 |
"metadata": {
|
| 359 |
"colab": {
|
| 360 |
"base_uri": "https://localhost:8080/"
|
|
@@ -362,76 +254,16 @@
|
|
| 362 |
"id": "jYugh9cOuwc9",
|
| 363 |
"outputId": "19c3a2ee-e7bc-4f1f-9c86-06bd7337b537"
|
| 364 |
},
|
| 365 |
-
"outputs": [
|
| 366 |
-
{
|
| 367 |
-
"data": {
|
| 368 |
-
"text/plain": [
|
| 369 |
-
"DeviceArray([[16384, 10042, 10042, ..., 10042, 10042, 9570],\n",
|
| 370 |
-
" [16384, 10042, 10042, ..., 10042, 10042, 9570],\n",
|
| 371 |
-
" [16384, 10042, 10042, ..., 10042, 10042, 9570],\n",
|
| 372 |
-
" ...,\n",
|
| 373 |
-
" [16384, 10042, 10042, ..., 10042, 10042, 9570],\n",
|
| 374 |
-
" [16384, 10042, 10042, ..., 10042, 10042, 9570],\n",
|
| 375 |
-
" [16384, 10042, 10042, ..., 10042, 10042, 9570]], dtype=int32)"
|
| 376 |
-
]
|
| 377 |
-
},
|
| 378 |
-
"execution_count": 15,
|
| 379 |
-
"metadata": {},
|
| 380 |
-
"output_type": "execute_result"
|
| 381 |
-
}
|
| 382 |
-
],
|
| 383 |
"source": [
|
| 384 |
"greedy_output[0]"
|
| 385 |
]
|
| 386 |
},
|
| 387 |
{
|
| 388 |
"cell_type": "code",
|
| 389 |
-
"execution_count":
|
| 390 |
"metadata": {},
|
| 391 |
-
"outputs": [
|
| 392 |
-
{
|
| 393 |
-
"data": {
|
| 394 |
-
"text/plain": [
|
| 395 |
-
"DeviceArray([16384, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 396 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 397 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 398 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 399 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 400 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 401 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 402 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 403 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 404 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 405 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 406 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 407 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 408 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 409 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 410 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 411 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 412 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 413 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 414 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 415 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 416 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 417 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 418 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 419 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 420 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 421 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 422 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 423 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 424 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 425 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 426 |
-
" 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042,\n",
|
| 427 |
-
" 9570], dtype=int32)"
|
| 428 |
-
]
|
| 429 |
-
},
|
| 430 |
-
"execution_count": 16,
|
| 431 |
-
"metadata": {},
|
| 432 |
-
"output_type": "execute_result"
|
| 433 |
-
}
|
| 434 |
-
],
|
| 435 |
"source": [
|
| 436 |
"greedy_output[0][0]"
|
| 437 |
]
|
|
@@ -445,7 +277,7 @@
|
|
| 445 |
},
|
| 446 |
{
|
| 447 |
"cell_type": "code",
|
| 448 |
-
"execution_count":
|
| 449 |
"metadata": {},
|
| 450 |
"outputs": [],
|
| 451 |
"source": [
|
|
@@ -463,7 +295,7 @@
|
|
| 463 |
},
|
| 464 |
{
|
| 465 |
"cell_type": "code",
|
| 466 |
-
"execution_count":
|
| 467 |
"metadata": {},
|
| 468 |
"outputs": [],
|
| 469 |
"source": [
|
|
@@ -472,7 +304,7 @@
|
|
| 472 |
},
|
| 473 |
{
|
| 474 |
"cell_type": "code",
|
| 475 |
-
"execution_count":
|
| 476 |
"metadata": {},
|
| 477 |
"outputs": [],
|
| 478 |
"source": [
|
|
@@ -487,7 +319,7 @@
|
|
| 487 |
},
|
| 488 |
{
|
| 489 |
"cell_type": "code",
|
| 490 |
-
"execution_count":
|
| 491 |
"metadata": {
|
| 492 |
"colab": {
|
| 493 |
"base_uri": "https://localhost:8080/"
|
|
@@ -496,22 +328,14 @@
|
|
| 496 |
"outputId": "994d8e85-bff7-480b-8b69-f69dedc15c49",
|
| 497 |
"scrolled": true
|
| 498 |
},
|
| 499 |
-
"outputs": [
|
| 500 |
-
{
|
| 501 |
-
"name": "stdout",
|
| 502 |
-
"output_type": "stream",
|
| 503 |
-
"text": [
|
| 504 |
-
"Working with z of shape (1, 256, 16, 16) = 65536 dimensions.\n"
|
| 505 |
-
]
|
| 506 |
-
}
|
| 507 |
-
],
|
| 508 |
"source": [
|
| 509 |
"model = VQModel.from_pretrained(\"flax-community/vqgan_f16_16384\")"
|
| 510 |
]
|
| 511 |
},
|
| 512 |
{
|
| 513 |
"cell_type": "code",
|
| 514 |
-
"execution_count":
|
| 515 |
"metadata": {},
|
| 516 |
"outputs": [],
|
| 517 |
"source": [
|
|
@@ -524,29 +348,9 @@
|
|
| 524 |
},
|
| 525 |
{
|
| 526 |
"cell_type": "code",
|
| 527 |
-
"execution_count":
|
| 528 |
"metadata": {},
|
| 529 |
-
"outputs": [
|
| 530 |
-
{
|
| 531 |
-
"name": "stdout",
|
| 532 |
-
"output_type": "stream",
|
| 533 |
-
"text": [
|
| 534 |
-
"(1, 256)\n",
|
| 535 |
-
"Working with z of shape (1, 256, 16, 16) = 65536 dimensions.\n"
|
| 536 |
-
]
|
| 537 |
-
},
|
| 538 |
-
{
|
| 539 |
-
"data": {
|
| 540 |
-
"image/png": "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\n",
|
| 541 |
-
"text/plain": [
|
| 542 |
-
"<PIL.Image.Image image mode=RGB size=256x256 at 0x7FA20677A400>"
|
| 543 |
-
]
|
| 544 |
-
},
|
| 545 |
-
"execution_count": 22,
|
| 546 |
-
"metadata": {},
|
| 547 |
-
"output_type": "execute_result"
|
| 548 |
-
}
|
| 549 |
-
],
|
| 550 |
"source": [
|
| 551 |
"custom_to_pil(np.asarray(get_images(jnp.expand_dims(greedy_output[0][0],0), model)[0]))"
|
| 552 |
]
|
|
@@ -561,7 +365,7 @@
|
|
| 561 |
"provenance": []
|
| 562 |
},
|
| 563 |
"kernelspec": {
|
| 564 |
-
"display_name": "Python 3",
|
| 565 |
"language": "python",
|
| 566 |
"name": "python3"
|
| 567 |
},
|
|
@@ -575,9 +379,9 @@
|
|
| 575 |
"name": "python",
|
| 576 |
"nbconvert_exporter": "python",
|
| 577 |
"pygments_lexer": "ipython3",
|
| 578 |
-
"version": "3.8.
|
| 579 |
}
|
| 580 |
},
|
| 581 |
"nbformat": 4,
|
| 582 |
-
"nbformat_minor":
|
| 583 |
}
|
|
|
|
| 27 |
},
|
| 28 |
{
|
| 29 |
"cell_type": "code",
|
| 30 |
+
"execution_count": null,
|
| 31 |
"metadata": {
|
| 32 |
"id": "M1wVkrpjU6zO"
|
| 33 |
},
|
|
|
|
| 39 |
},
|
| 40 |
{
|
| 41 |
"cell_type": "code",
|
| 42 |
+
"execution_count": null,
|
| 43 |
"metadata": {},
|
| 44 |
+
"outputs": [],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 45 |
"source": [
|
| 46 |
"%cd ../../vqgan-jax"
|
| 47 |
]
|
|
|
|
| 57 |
},
|
| 58 |
{
|
| 59 |
"cell_type": "code",
|
| 60 |
+
"execution_count": null,
|
| 61 |
"metadata": {
|
| 62 |
"id": "9jQnM6S2vCpn"
|
| 63 |
},
|
|
|
|
| 72 |
},
|
| 73 |
{
|
| 74 |
"cell_type": "code",
|
| 75 |
+
"execution_count": null,
|
| 76 |
"metadata": {
|
| 77 |
"id": "_eEaJVxAKpV5"
|
| 78 |
},
|
|
|
|
| 125 |
},
|
| 126 |
{
|
| 127 |
"cell_type": "code",
|
| 128 |
+
"execution_count": null,
|
| 129 |
"metadata": {
|
| 130 |
"scrolled": true
|
| 131 |
},
|
| 132 |
+
"outputs": [],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 133 |
"source": [
|
| 134 |
"import wandb\n",
|
| 135 |
"run = wandb.init()\n",
|
|
|
|
| 139 |
},
|
| 140 |
{
|
| 141 |
"cell_type": "code",
|
| 142 |
+
"execution_count": null,
|
| 143 |
"metadata": {
|
| 144 |
"id": "_6-XKK40oEfP",
|
| 145 |
"scrolled": true
|
| 146 |
},
|
| 147 |
+
"outputs": [],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 148 |
"source": [
|
| 149 |
"# create our model and initialize it randomly\n",
|
| 150 |
"model = CustomFlaxBartForConditionalGeneration.from_pretrained(artifact_dir)"
|
|
|
|
| 152 |
},
|
| 153 |
{
|
| 154 |
"cell_type": "code",
|
| 155 |
+
"execution_count": null,
|
| 156 |
"metadata": {},
|
| 157 |
"outputs": [],
|
| 158 |
"source": [
|
|
|
|
| 161 |
},
|
| 162 |
{
|
| 163 |
"cell_type": "code",
|
| 164 |
+
"execution_count": null,
|
| 165 |
"metadata": {
|
| 166 |
"colab": {
|
| 167 |
"base_uri": "https://localhost:8080/"
|
|
|
|
| 169 |
"id": "Jz032w73nHEf",
|
| 170 |
"outputId": "994d8e85-bff7-480b-8b69-f69dedc15c49"
|
| 171 |
},
|
| 172 |
+
"outputs": [],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 173 |
"source": [
|
| 174 |
"# we verify that the shape has not been modified\n",
|
| 175 |
"model.params['final_logits_bias'].shape"
|
|
|
|
| 186 |
},
|
| 187 |
{
|
| 188 |
"cell_type": "code",
|
| 189 |
+
"execution_count": null,
|
| 190 |
"metadata": {
|
| 191 |
"id": "XLLA2NK3uDQr"
|
| 192 |
},
|
|
|
|
| 197 |
},
|
| 198 |
{
|
| 199 |
"cell_type": "code",
|
| 200 |
+
"execution_count": null,
|
| 201 |
"metadata": {},
|
| 202 |
"outputs": [],
|
| 203 |
"source": [
|
|
|
|
| 206 |
},
|
| 207 |
{
|
| 208 |
"cell_type": "code",
|
| 209 |
+
"execution_count": null,
|
| 210 |
"metadata": {
|
| 211 |
"id": "P32mJJSbrU1F"
|
| 212 |
},
|
|
|
|
| 217 |
},
|
| 218 |
{
|
| 219 |
"cell_type": "code",
|
| 220 |
+
"execution_count": null,
|
| 221 |
"metadata": {},
|
| 222 |
+
"outputs": [],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 223 |
"source": [
|
| 224 |
"input_ids_test"
|
| 225 |
]
|
| 226 |
},
|
| 227 |
{
|
| 228 |
"cell_type": "code",
|
| 229 |
+
"execution_count": null,
|
| 230 |
"metadata": {
|
| 231 |
"id": "C7cHbIHruELT"
|
| 232 |
},
|
|
|
|
| 237 |
},
|
| 238 |
{
|
| 239 |
"cell_type": "code",
|
| 240 |
+
"execution_count": null,
|
| 241 |
"metadata": {},
|
| 242 |
+
"outputs": [],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 243 |
"source": [
|
| 244 |
"greedy_output[0].shape"
|
| 245 |
]
|
| 246 |
},
|
| 247 |
{
|
| 248 |
"cell_type": "code",
|
| 249 |
+
"execution_count": null,
|
| 250 |
"metadata": {
|
| 251 |
"colab": {
|
| 252 |
"base_uri": "https://localhost:8080/"
|
|
|
|
| 254 |
"id": "jYugh9cOuwc9",
|
| 255 |
"outputId": "19c3a2ee-e7bc-4f1f-9c86-06bd7337b537"
|
| 256 |
},
|
| 257 |
+
"outputs": [],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 258 |
"source": [
|
| 259 |
"greedy_output[0]"
|
| 260 |
]
|
| 261 |
},
|
| 262 |
{
|
| 263 |
"cell_type": "code",
|
| 264 |
+
"execution_count": null,
|
| 265 |
"metadata": {},
|
| 266 |
+
"outputs": [],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 267 |
"source": [
|
| 268 |
"greedy_output[0][0]"
|
| 269 |
]
|
|
|
|
| 277 |
},
|
| 278 |
{
|
| 279 |
"cell_type": "code",
|
| 280 |
+
"execution_count": null,
|
| 281 |
"metadata": {},
|
| 282 |
"outputs": [],
|
| 283 |
"source": [
|
|
|
|
| 295 |
},
|
| 296 |
{
|
| 297 |
"cell_type": "code",
|
| 298 |
+
"execution_count": null,
|
| 299 |
"metadata": {},
|
| 300 |
"outputs": [],
|
| 301 |
"source": [
|
|
|
|
| 304 |
},
|
| 305 |
{
|
| 306 |
"cell_type": "code",
|
| 307 |
+
"execution_count": null,
|
| 308 |
"metadata": {},
|
| 309 |
"outputs": [],
|
| 310 |
"source": [
|
|
|
|
| 319 |
},
|
| 320 |
{
|
| 321 |
"cell_type": "code",
|
| 322 |
+
"execution_count": null,
|
| 323 |
"metadata": {
|
| 324 |
"colab": {
|
| 325 |
"base_uri": "https://localhost:8080/"
|
|
|
|
| 328 |
"outputId": "994d8e85-bff7-480b-8b69-f69dedc15c49",
|
| 329 |
"scrolled": true
|
| 330 |
},
|
| 331 |
+
"outputs": [],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 332 |
"source": [
|
| 333 |
"model = VQModel.from_pretrained(\"flax-community/vqgan_f16_16384\")"
|
| 334 |
]
|
| 335 |
},
|
| 336 |
{
|
| 337 |
"cell_type": "code",
|
| 338 |
+
"execution_count": null,
|
| 339 |
"metadata": {},
|
| 340 |
"outputs": [],
|
| 341 |
"source": [
|
|
|
|
| 348 |
},
|
| 349 |
{
|
| 350 |
"cell_type": "code",
|
| 351 |
+
"execution_count": null,
|
| 352 |
"metadata": {},
|
| 353 |
+
"outputs": [],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 354 |
"source": [
|
| 355 |
"custom_to_pil(np.asarray(get_images(jnp.expand_dims(greedy_output[0][0],0), model)[0]))"
|
| 356 |
]
|
|
|
|
| 365 |
"provenance": []
|
| 366 |
},
|
| 367 |
"kernelspec": {
|
| 368 |
+
"display_name": "Python 3 (ipykernel)",
|
| 369 |
"language": "python",
|
| 370 |
"name": "python3"
|
| 371 |
},
|
|
|
|
| 379 |
"name": "python",
|
| 380 |
"nbconvert_exporter": "python",
|
| 381 |
"pygments_lexer": "ipython3",
|
| 382 |
+
"version": "3.8.5"
|
| 383 |
}
|
| 384 |
},
|
| 385 |
"nbformat": 4,
|
| 386 |
+
"nbformat_minor": 4
|
| 387 |
}
|
dev/notebooks/demo/tpu-demo.ipynb
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|