1. 13 May, 2024 1 commit
    • Alazar's avatar
      Port IDEFICS to tensorflow (#26870) · 94306352
      Alazar authored
      
      
      * Initial commit
      
      * Just a copy of modeling_idefics.py that will be ported to TF
      
      * - Prepend TF to the name of all classes
      - Convert pytorch ops to TF (not all operations are converted yet)
      
      * Add TF imports
      
      * Add autotranslated files
      
      * Add TF classes to model_tf_auto.py
      
      * Add the TF classes in model_doc
      
      * include auto-translated code
      
      * Adopted from auto-translated version
      
      * Add a forgotten super().build
      
      * Add test code for TF version.
      
      * Fix indentation and load pytorch weights for now
      
      * Some fixes. Many tests are still failing but some are passing now.
      
      - I have added TODO's for some of the hacks I made to unblock me
        and I will address them soon
      - I have the processing_idefics.py hacked in my view to support TF temporarily
      
      * Add ALL_LAYERNORM_LAYERS to match pytorch
      
      * Revert "Add ALL_LAYERNORM_LAYERS to match pytorch"
      
      This reverts commit 7e0a35119b4d7a6284d04d8c543fba1b29e573c9 as it
      is not needed in the tf implementation.
      
      * Fix freeze_relevant_params()
      
      * Some more fixes
      
      * Fix test_attention_outputs
      
      * Add tf stuff to processing_idefics.py
      
      processing_idefics.py supports both pytorch and tf now.
      
      test_processor_idefics.py for pytorch is passing, so i didn't break anything
      but still some issues with tf. I also need to add tf tests in
      test_processor_idefics.py.
      
      * Pass return_tensors to image processing code and fix test
      
      * Pass return_tensors to the image processor __init__
      
      * Fix several test cases
      
      - Make input to some of the forward pass of type `TFModelInputType`
      - Decorate main layer forward pass with `@unpack_inputs`
      - Decorate main layer with `@keras_serializable`
      - Pass `inputs` to TFIdeficsModel
      
      * Some more fixes forgotten in last commit
      
      * Fix processing code and vision_tf.py
      
      * Fix perceiver bug
      
      * Import from
      
      * Auto-add build() methods + style pass
      
      * Fix build() errors due to `None` being passed as shape to some layers
      
      * Change name in TFIdeficsForVisionText2Text to attribute in IdeficsForVisionText2Text
      
      * Fix pytorch weights load for tf2
      
      There were a lot of `name=` missing in weight initialization code.
      
      * Attempt to fix CI
      
      * Add back accidently removed line
      
      * Remove torch-specific stuff from the TF test file
      
      * make fix-copies, make style, remove autotranslated files
      
      * Fixes to imports/docstrings
      
      * Let's try the from future import in desperation
      
      * Fix the core random_attention_mask fn to match the torch/flax behaviour
      
      * Clean random_attention_mask up correctly
      
      * Remove torch-only test
      
      * Fix loss shape, couple of nits
      
      * make style
      
      * Don't test for OOB embeddings because IDEFICS uses those deliberately
      
      * Fix loss computation to handle masking
      
      * Fix test failures when flattening
      
      * Fix some test failures
      
      - Add cross attention gate which was missing and wasn't being passed arround
      - Fix overwriting of image_attention_mask due to hack I had for dummy inputs
      
      * Add a proper stateless scaled_dot_product_attention
      
      * make style
      
      * Adding missing attribute from the PyTorch version
      
      * Small cleanups to decoupledlinearlayer in case that helps
      
      * Pass epsilon to LayerNormalization
      
      * Attemp to fix pytorch weight cross-loading for TFIdeficsEmbedding
      
      * Fix a bug in TFIdeficsGatedCrossAttentionLayer
      
      * Patching up build() methods
      
      * Constant self.inv_freq
      
      * Constant self.inv_freq
      
      * First working version
      
      The TF implementation works now, there was a bug in the TFIdeficsDecoupledLinear
      where the weights were mis-intialized (in_features,out_features)
      when it should be: (out_features, in_features)
      
      I have tested this so far with tiny-random and idefics-9b-instruct
      and gives correct output.
      
      I also dumped the final outputs for both pytorch and TF
      and they are identical.
      
      * Fix some test failures
      
      * remove print statement
      
      * Fix return_tensors
      
      * Fix CI test failure check_code_quality
      
      * Attempt to fix CI failures by running `make fixup`
      
      The hardcoded IDs in test_modeling_tf_idefics.py are for the integration
      test and makes that file unreadable and should probably be moved to a seperate file.
      
      * Attempt to fix tests_pr_documentation_tests
      
      * Fix a test failure in test_image_processing_idefics.py
      
      * Fix test test_pt_tf_model_equivalence
      
      * Fix a few failures
      
      * Tiny fix
      
      * Some minor fixes
      
      * Remove a duplicate test
      
      * Override a few test failures for IDEFICS
      
      - `test_keras_save_load` is passing now
      - `test_compile_tf_model` is still failing
      
      * Fix processing_idefics.py after rebase
      
      * Guard import keras with is_tf_available
      
      * fix check code quality
      
      * fix check code quality
      
      * Minor fixes
      
      * Skip test_save_load temporarily
      
      This test passed on my local box but fails on the CI, skipping
      for now to see if there are other remaining failures on the CI.
      
      * Run `ruff format tests src utils`
      
      * Fix last failing test, `test_compile_tf_model`
      
      * Add fixes for vision_tf.py
      
      I forgot to add this file in last commit.
      
      * Minor fixes
      
      * Replace "<<<" with "<<" for doc tests
      
      IDEFICS-9B is too big for doctest runner, so don't run it there
      
      * Make code more readable
      
      * Fix bug after code review
      
      I added a layer_norm_eps to IdeficsConfig but I don't even need it
      since the vision config has a layer_norm_eps.
      
      * Fix after code review
      
      Use original code tokenizer.convert_tokens_to_ids
      
      * Keep PyTorch as the default return_tensors
      
      * Fixes to modeling_tf after code review
      
      * Fixes from code review
      
      - Remove all references of `TF_IDEFICS_PRETRAINED_MODEL_ARCHIVE_LIST`
      - Pass 1e-5 to LayerNormalization in perceiver
      
      * Run ruff
      
      * Undo a change
      
      * Refactor processing code after Matt's suggestion
      
      * Remove TODO's that aren't needed anymore
      
      * For pytorch, Use original pytorch processing code from main
      
      Since this PR is a TF port it shouldn't make any modifications
      to pytorch IDEFICS code. This changes undo's the pytorch processing
      modifications I made and uses original code from main.
      
      * Update tests/models/idefics/test_modeling_idefics.py
      
      * Update tests/models/idefics/test_modeling_tf_idefics.py
      
      * Add missing imports for is_pt_tf_cross_test
      
      * [DO NOT MERGE]: This is a commit for debugging and will be reverted
      
      The cross test `test_pt_tf_model_equivalence` passes locally but
      fails when running on the CI. This commit is to help debug that
      and will be reverted.
      
      * Revert "[DO NOT MERGE]: This is a commit for debugging and will be reverted"
      
      This reverts commit 8f0d709ec5bd46685fb0b4259d914ffee794875b.
      
      * [DO NOT MERGE]: This commit is for debugging a CI failure and will be reverted
      
      * [DO NOT MERGE]: This commit is for debugging a CI failure and will be reverted
      
      * Revert "[DO NOT MERGE]: This commit is for debugging a CI failure and will be reverted"
      
      This reverts commit 998cc38b8c3d313bf5e5eb55a7f5b7b881897b89.
      
      * Revert "[DO NOT MERGE]: This commit is for debugging a CI failure and will be reverted"
      
      This reverts commit 1c695ac4219c4ae4d39b330b01744dc27deb7dd4.
      
      * Don't skip test_save_load
      
      IIRC test_save_load was also failing on the CI but not on my local
      box, it might be easier to debug that on the CI first than the cross tests
      
      * Debugging commit, will be reverted
      
      * Revert "Debugging commit, will be reverted"
      
      This reverts commit 8eafc8e41e20c4e95a3a90834f06a6e9f445e2d5.
      
      * Override `test_save_load` and push model to save
      
      Maybe this will help me repro this weird bug
      
      * pass my repo_id
      
      * add endpoint
      
      * Pass a temp (write) token just for this CI
      
      * Undo last few commits, still pushing to hub for model debugging
      
      The issue seems to be with save_pretrained(),  when I looked at the model saved
      from the CI test failure it is basically empty and has no weights.
      `self.save_weights(..)` seems to be failing in save_pretrained but needs
      more debugging
      
      * Add logging to modeling tf utils, will be reverted just for debugging
      
      * Debugging, will revert
      
      * Revert "Debugging, will revert"
      
      This reverts commit 9d0d3075fb7c82d8cde3a5c76bc8f3876c5c55d3.
      
      * Revert "Add logging to modeling tf utils, will be reverted just for debugging"
      
      This reverts commit 774b6b7b1c17b3ce5d7634ade768f2f686cee617.
      
      * Remove `test_save_load`
      
      The CI failures are gone after my latest rebase, no idea why
      but I was still saving the model to my hub on HF and the tf_model.h5
      file now has everything.
      
      * Run make fix-copies
      
      * Run ruff format tests src utils
      
      * Debugging commit, will be reverted
      
      * Run ruff, also trigger CI run
      
      * Run ruff again
      
      * Undo debugging commit
      
      ---------
      Co-authored-by: default avatarMatt <rocketknight1@gmail.com>
      Co-authored-by: default avatarMatt <Rocketknight1@users.noreply.github.com>
      94306352
  2. 30 Jan, 2024 1 commit
    • Matt's avatar
      Add tf_keras imports to prepare for Keras 3 (#28588) · 415e9a09
      Matt authored
      * Port core files + ESM (because ESM code is odd)
      
      * Search-replace in modelling code
      
      * Fix up transfo_xl as well
      
      * Fix other core files + tests (still need to add correct import to tests)
      
      * Fix cookiecutter
      
      * make fixup, fix imports in some more core files
      
      * Auto-add imports to tests
      
      * Cleanup, add imports to sagemaker tests
      
      * Use correct exception for importing tf_keras
      
      * Fixes in modeling_tf_utils
      
      * make fixup
      
      * Correct version parsing code
      
      * Ensure the pipeline tests correctly revert to float32 after each test
      
      * Ensure the pipeline tests correctly revert to float32 after each test
      
      * More tf.keras -> keras
      
      * Add dtype cast
      
      * Better imports of tf_keras
      
      * Add a cast for tf.assign, just in case
      
      * Fix callback imports
      415e9a09
  3. 14 Dec, 2023 1 commit
  4. 24 Nov, 2023 1 commit
  5. 16 Nov, 2023 1 commit
    • Arthur's avatar
      [`Styling`] stylify using ruff (#27144) · 651408a0
      Arthur authored
      
      
      * try to stylify using ruff
      
      * might need to remove these changes?
      
      * use ruf format andruff check
      
      * use isinstance instead of type comparision
      
      * use # fmt: skip
      
      * use # fmt: skip
      
      * nits
      
      * soem styling changes
      
      * update ci job
      
      * nits isinstance
      
      * more files update
      
      * nits
      
      * more nits
      
      * small nits
      
      * check and format
      
      * revert wrong changes
      
      * actually use formatter instead of checker
      
      * nits
      
      * well docbuilder is overwriting this commit
      
      * revert notebook changes
      
      * try to nuke docbuilder
      
      * style
      
      * fix feature exrtaction test
      
      * remve `indent-width = 4`
      
      * fixup
      
      * more nits
      
      * update the ruff version that we use
      
      * style
      
      * nuke docbuilder styling
      
      * leve the print for detected changes
      
      * nits
      
      * Remove file I/O
      Co-authored-by: default avatarcharliermarsh <charlie.r.marsh@gmail.com>
      
      * style
      
      * nits
      
      * revert notebook changes
      
      * Add # fmt skip when possible
      
      * Add # fmt skip when possible
      
      * Fix
      
      * More `  # fmt: skip` usage
      
      * More `  # fmt: skip` usage
      
      * More `  # fmt: skip` usage
      
      * NIts
      
      * more fixes
      
      * fix tapas
      
      * Another way to skip
      
      * Recommended way
      
      * Fix two more fiels
      
      * Remove asynch
      Remove asynch
      
      ---------
      Co-authored-by: default avatarcharliermarsh <charlie.r.marsh@gmail.com>
      651408a0
  6. 17 Aug, 2023 1 commit
  7. 30 Jun, 2023 2 commits
  8. 27 Jun, 2023 1 commit
  9. 16 Jun, 2023 3 commits
    • Matt's avatar
      Add test for proper TF input signatures (#24320) · 91389950
      Matt authored
      * Add test for proper input signatures
      
      * No more signature pruning
      
      * Test the dummy inputs are valid too
      
      * fine-tine -> fine-tune
      
      * Fix indent in test_dataset_conversion
      91389950
    • Matt's avatar
      Big TF test cleanup (#24282) · 34037129
      Matt authored
      * Fix one BLIP arg not being optional, remove misspelled arg
      
      * Remove the lxmert test overrides and just use the base test_saved_model_creation
      
      * saved_model_creation fixes and re-enabling tests across the board
      
      * Remove unnecessary skip
      
      * Stop caching sinusoidal embeddings in speech_to_text
      
      * Fix transfo_xl compilation
      
      * Fix transfo_xl compilation
      
      * Fix the conditionals in xglm
      
      * Set the save spec only when building
      
      * Clarify comment
      
      * Move comment correctly
      
      * Correct embeddings generation for speech2text
      
      * Mark RAG generation tests as @slow
      
      * Remove redundant else:
      
      * Add comment to clarify the save_spec line in build()
      
      * Fix size tests for XGLM at last!
      
      * make fixup
      
      * Remove one band_part operation
      
      * Mark test_keras_fit as @slow
      34037129
    • Matt's avatar
      Fix functional TF Whisper and modernize tests (#24301) · 62d71f40
      Matt authored
      * Revert whisper change and modify the test_compile_tf_model test
      
      * make fixup
      
      * Tweak test slightly
      
      * Add functional model saving to test
      
      * Ensure TF can infer shapes for data2vec
      
      * Add override for efficientformer
      
      * Mark test as slow
      62d71f40
  10. 15 Jun, 2023 1 commit
  11. 13 Jun, 2023 2 commits
    • Matt's avatar
      Stop storing references to bound methods via tf.function (#24146) · 3bd1fe43
      Matt authored
      * Stop storing references to bound methods in tf.functions
      
      * Remove the gc.collect calls now that we resolved the underlying problem
      
      * Remove the default signature from model.serving entirely, big cleanup
      
      * Remove _prune_signature as self.input_signature can prune itself
      
      * Restore serving docstring
      
      * Update int support test to check the input signature
      
      * Make sure other tests also use model.input_signature and not serving.input_signature
      
      * Restore _prune_signature
      
      * Remove the doctest GC now it's no longer needed
      
      * Correct core tests to use the pruned sig
      
      * order lines correctly in core tests
      
      * Add eager_serving back with a deprecation warning
      3bd1fe43
    • Joao Gante's avatar
  12. 06 Jun, 2023 1 commit
    • Matt's avatar
      Move TF building to an actual build() method (#23760) · 4a55e478
      Matt authored
      * A fun new PR where I break the entire codebase again
      
      * A fun new PR where I break the entire codebase again
      
      * Handle cross-attention
      
      * Move calls to model(model.dummy_inputs) to the new build() method
      
      * Seeing what fails with the build context thing
      
      * make fix-copies
      
      * Let's see what fails with new build methods
      
      * Fix the pytorch crossload build calls
      
      * Fix the overridden build methods in vision_text_dual_encoder
      
      * Make sure all our build methods set self.built or call super().build(), which also sets it
      
      * make fix-copies
      
      * Remove finished TODO
      
      * Tentatively remove unneeded (?) line
      
      * Transpose b in deberta correctly and remove unused threading local
      
      * Get rid of build_with_dummies and all it stands for
      
      * Rollback some changes to TF-PT crossloading
      
      * Correctly call super().build()
      4a55e478
  13. 24 May, 2023 2 commits
    • Matt's avatar
      Overhaul TF serving signatures + dummy inputs (#23234) · 814de8fa
      Matt authored
      * Let's try autodetecting serving sigs
      
      * Don't clobber existing sigs
      
      * Change shapes for multiplechoice models
      
      * Make default dummy inputs smarter too
      
      * Fix missing f-string
      
      * Let's YOLO a serving output too
      
      * Read __class__.__name__ properly
      
      * Don't just pass naked lists in there and expect it to be okay
      
      * Code cleanup
      
      * Update default serving sig
      
      * Clearer error messages
      
      * Further updates to the default serving output
      
      * make fixup
      
      * Update the serving output a bit more
      
      * Cleanups and renames, raise errors appropriately when we can't infer inputs
      
      * More renames
      
      * we're building in a functional context again, yolo
      
      * import DUMMY_INPUTS from the right place
      
      * import DUMMY_INPUTS from the right place
      
      * Support cross-attention in the dummies
      
      * Support cross-attention in the dummies
      
      * Complete removal of dummy/serving overrides in BERT
      
      * Complete removal of dummy/serving overrides in RoBERTa
      
      * Obliterate lots and lots of serving sig and dummy overrides
      
      * merge type hint changes
      
      * Fix for token_type_ids with vocab_size 1
      
      * Add missing property decorator
      
      * Fix T5 and hopefully some models that take conv inputs
      
      * More signature pruning
      
      * Fix T5's signature
      
      * Fix Wav2Vec2 signature
      
      * Fix LongformerForMultipleChoice input signature
      
      * Fix BLIP and LED
      
      * Better default serving output error handling
      
      * Fix BART dummies
      
      * Fix dummies for cross-attention, esp encoder-decoder models
      
      * Fix visionencoderdecoder signature
      
      * Fix BLIP serving output
      
      * Small tweak to BART dummies
      
      * Cleanup the ugly parameter inspection line that I used in a few places
      
      * committed a breakpoint again
      
      * Move the text_dims check
      
      * Remove blip_text serving_output
      
      * Add decoder_input_ids to the default input sig
      
      * Remove all the manual overrides for encoder-decoder model signatures
      
      * Tweak longformer/led input sigs
      
      * Tweak default serving output
      
      * output.keys() -> output
      
      * make fixup
      814de8fa
    • Matt's avatar
      Better TF docstring types (#23477) · f8b25744
      Matt authored
      * Rework TF type hints to use | None instead of Optional[] for tf.Tensor
      
      * Rework TF type hints to use | None instead of Optional[] for tf.Tensor
      
      * Don't forget the imports
      
      * Add the imports to tests too
      
      * make fixup
      
      * Refactor tests that depended on get_type_hints
      
      * Better test refactor
      
      * Fix an old hidden bug in the test_keras_fit input creation code
      
      * Fix for the Deit tests
      f8b25744
  14. 28 Apr, 2023 1 commit
  15. 24 Apr, 2023 1 commit
  16. 04 Apr, 2023 2 commits
  17. 09 Mar, 2023 1 commit
  18. 07 Mar, 2023 1 commit
  19. 28 Feb, 2023 1 commit
    • Matt's avatar
      Improve TF weight loading, especially PT crossloading (#21792) · acfb714b
      Matt authored
      * First commit for the improved PT-TF weight loading
      
      * Remove workarounds from TFEncoderDecoder tests
      
      * Allow a custom weight renaming function in from_pretrained and use that to clean up EncoderDecoder
      
      * make fixup
      
      * First attempt at visionencoderdecoder
      
      * Disable tensorfloat32 in tests to get consistent outputs
      
      * Quick fix to tf_vision_encoder_decoder tests
      
      * make fixup
      
      * Update Blenderbot tests
      
      * Remove unused arg in modeling_tf_opt
      
      * load_tf_sharded_weights had strict=True! This meant transfer learning was impossible, so I'm setting it to False.
      
      * Support prefixes when loading sharded TF checkpoints
      
      * make fixup
      
      * Add test to load sharded models with a weight prefix
      
      * Fix sharded weight loading test
      
      * Add a test for transfer from a sharded checkpoint
      
      * make fixup
      
      * Add test to check that crossloading from PT with a prefix works
      
      * Refactor from_pretrained in the encoderdecoder classes
      
      * Refactor from_pretrained in the encoderdecoder classes
      
      * missmatched -> mismatched
      
      * Explicitly check for None
      
      * No comments showing my very impressive and attractive knowledge of Py3.9+
      
      * Disable TF32 across all TF tests
      acfb714b
  20. 22 Feb, 2023 1 commit
  21. 06 Feb, 2023 1 commit
    • Sylvain Gugger's avatar
      Update quality tooling for formatting (#21480) · 6f79d264
      Sylvain Gugger authored
      * Result of black 23.1
      
      * Update target to Python 3.7
      
      * Switch flake8 to ruff
      
      * Configure isort
      
      * Configure isort
      
      * Apply isort with line limit
      
      * Put the right black version
      
      * adapt black in check copies
      
      * Fix copies
      6f79d264
  22. 31 Jan, 2023 1 commit
  23. 23 Jan, 2023 1 commit
  24. 18 Jan, 2023 1 commit
  25. 04 Jan, 2023 1 commit
  26. 14 Dec, 2022 1 commit
  27. 05 Dec, 2022 1 commit
  28. 28 Nov, 2022 1 commit
    • Matt's avatar
      More TF int dtype fixes (#20384) · de4159a3
      Matt authored
      * Add a test to ensure int dummy inputs are int64
      
      * Move the test into the existing int64 test and update a lot of existing dummies
      
      * Fix remaining dummies
      
      * Fix remaining dummies
      
      * Test for int64 serving sigs as well
      
      * Update core tests to use tf.int64
      
      * Add better messages to the assertions
      
      * Update all serving sigs to int64
      
      * More sneaky hiding tf.int32s
      
      * Add an optional int32 signature in save_pretrained
      
      * make fixup
      
      * Add Amy's suggestions
      
      * Switch all serving sigs back to tf.int32
      
      * Switch all dummies to tf.int32
      
      * Adjust tests to check for tf.int32 instead of tf.int64
      
      * Fix base dummy_inputs dtype
      
      * Start casting to tf.int32 in input_processing
      
      * Change dtype for unpack_inputs test
      
      * Add proper tf.int32 test
      
      * Make the alternate serving signature int64
      de4159a3
  29. 22 Nov, 2022 1 commit
  30. 17 Nov, 2022 2 commits
  31. 15 Nov, 2022 1 commit
    • Matt's avatar
      Slightly alter Keras dummy loss (#20232) · 26ec7928
      Matt authored
      * Slightly alter Keras dummy loss
      
      * Slightly alter Keras dummy loss
      
      * Add sample weight to test_keras_fit
      
      * Fix test_keras_fit for datasets
      
      * Skip the sample_weight stuff for models where the model tester has no batch_size
      26ec7928
  32. 09 Nov, 2022 1 commit
  33. 07 Nov, 2022 1 commit