Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iOS 18 Target Regression #2353

Open
NoahBPeterson opened this issue Oct 2, 2024 · 8 comments
Open

iOS 18 Target Regression #2353

NoahBPeterson opened this issue Oct 2, 2024 · 8 comments
Labels
bug Unexpected behaviour that should be corrected (type) triaged Reviewed and examined, release as been assigned if applicable (status)

Comments

@NoahBPeterson
Copy link

🐞Describing the bug

  • My model works as expected when converting to coremltools.target.iOS17, but only outputs nan when targeting coremltools.target.iOS18

To Reproduce

  • Clone this repository: https://github.com/NoahBPeterson/mxbai-embed-large-v1-CoreML (commit 4121f6d5ab6506ba7c5a18cac320ab92f9b6541f)
  • Run convert_pytorch_coreml.py.
  • Test the output using run_coreml.py
  • It should output an array of floats.
  • Change line 40 in convert_pytorch_coreml.py to minimum_deployment_target=ct.target.iOS18,
  • Convert the model again
  • Run: the model only outputs nan

System environment (please complete the following information):

  • coremltools version: 8.0
  • OS (e.g. MacOS version or Linux type): macOS 15.0
  • Any other relevant version information (e.g. PyTorch or TensorFlow version): torch 2.4.0, Python 3.11
@NoahBPeterson NoahBPeterson added the bug Unexpected behaviour that should be corrected (type) label Oct 2, 2024
@junpeiz
Copy link
Collaborator

junpeiz commented Oct 3, 2024

Hey @NoahBPeterson
Thank you for reporting this. I tried your script and even for minimum_deployment_target=ct.target.iOS17 it produced nan.

Could you confirm on your side that minimum_deployment_target=ct.target.iOS17 works well? Thanks!

@junpeiz junpeiz added the awaiting response Please respond to this issue to provide further clarification (status) label Oct 3, 2024
@NoahBPeterson
Copy link
Author

Yes, I can confirm that it does work with ct.target.iOS17.

 ~/Documents/books/coreml-conversion  python3.11 run_coreml.py
CLS Token Embedding: [ 2.39501953e-01 -5.38574219e-01  3.90930176e-02  2.28149414e-01
 -2.43652344e-01 -9.51538086e-02  2.86376953e-01 -3.62304688e-01
  4.11132812e-01  6.15722656e-01  3.78906250e-01  2.64648438e-01
 -6.11305237e-04 -6.48925781e-01 -2.91748047e-01 -1.96411133e-01
 -3.57421875e-01 -7.26928711e-02 -8.73046875e-01 -2.16430664e-01
  2.01293945e-01  1.80419922e-01 -1.35644531e+00 -1.87988281e-01
 -3.80371094e-01  9.71191406e-01  5.93261719e-01 -1.61010742e-01
  7.89550781e-01  6.19628906e-01 -2.29614258e-01  2.67822266e-01
  3.09814453e-01 -4.89746094e-01 -6.42089844e-01 -4.79492188e-01
  8.33007812e-01 -7.53417969e-01 -1.92016602e-01 -6.23046875e-01
  3.21289062e-01 -6.57714844e-01  9.12597656e-01 -9.61914062e-01
 -1.58496094e+00 -4.77294922e-01  6.93359375e-01 -4.13818359e-01
 -3.82324219e-01 -1.45385742e-01  1.73095703e-01  6.13098145e-02
  4.75585938e-01  1.70410156e-01  5.82031250e-01 -8.15917969e-01
  1.36718750e-01  1.04858398e-01 -1.41699219e+00  9.95605469e-01
  7.91503906e-01  5.28320312e-01 -2.26684570e-01 -1.41992188e+00
  1.81518555e-01 -6.42700195e-02 -1.77856445e-01  1.84204102e-01
 -9.88769531e-03 -6.55761719e-01 -6.89453125e-01  6.34155273e-02
 -2.64404297e-01 -7.98828125e-01 -4.59228516e-01  7.22656250e-02
  2.41699219e-01 -1.68212891e-01 -3.04687500e-01  1.10644531e+00
  5.54504395e-02  6.30859375e-01  1.11621094e+00 -2.92724609e-01
 -6.36230469e-01 -3.23974609e-01  8.75488281e-01  4.60693359e-01
 -7.72094727e-02 -4.99511719e-01 -4.21386719e-01  8.23730469e-01
 -5.12207031e-01  9.16992188e-01 -1.92749023e-01  6.75292969e-01
  9.97924805e-02  1.22314453e-01 -2.73193359e-01  5.46264648e-02
  6.58203125e-01  9.96582031e-01 -3.52539062e-01  7.69042969e-01
 -8.81347656e-01  2.76855469e-01 -2.92968750e-01 -1.89575195e-01
 -4.95910645e-02 -1.81274414e-01 -5.07812500e-01  1.70288086e-01
  2.39257812e-01 -2.30590820e-01 -6.60156250e-01  2.84179688e-01
 -8.98742676e-03 -7.15332031e-02 -3.61083984e-01  2.06787109e-01
  3.88183594e-01 -1.27685547e-01  7.67211914e-02 -6.58691406e-01
 -1.06262207e-01 -4.70214844e-01 -2.14233398e-02  1.22460938e+00
 -1.13378906e+00 -2.04345703e-01  4.19189453e-01 -1.25122070e-01
  5.97167969e-01  8.50830078e-02  2.42187500e-01  9.02099609e-02
  2.33398438e-01  3.10058594e-01  6.48437500e-01 -5.86425781e-01
  2.80273438e-01  1.27197266e-01 -3.73291016e-01  1.37109375e+00
  7.92968750e-01 -1.23840332e-01 -3.11035156e-01 -7.54394531e-01
 -6.88476562e-01  6.33789062e-01 -4.15283203e-01 -2.25830078e-01
  5.93750000e-01  6.88476562e-01 -3.93066406e-01 -1.87988281e-01
 -1.42578125e-01  4.25720215e-02 -6.69921875e-01 -1.39892578e-01
 -1.40136719e-01  3.32763672e-01 -9.07714844e-01  5.31738281e-01
 -5.62011719e-01  4.32128906e-01 -7.12402344e-01 -1.37176514e-02
 -9.90722656e-01 -6.34277344e-01  3.21533203e-01  5.41503906e-01
 -4.02832031e-01  7.00683594e-01  6.25610352e-02  9.27734375e-01
  6.66503906e-01  4.29992676e-02  3.18359375e-01 -2.32543945e-01
 -6.62597656e-01  1.19567871e-01  6.10839844e-01  4.92187500e-01
  2.56652832e-02  8.61206055e-02 -3.87878418e-02  6.26220703e-02
 -5.04882812e-01  3.28125000e-01  3.52050781e-01  6.67968750e-01
 -4.48974609e-01  5.81542969e-01 -4.16992188e-01  2.49633789e-01
 -1.03710938e+00  2.68310547e-01 -1.53320312e-01 -1.20019531e+00
 -6.19628906e-01  1.54541016e-01 -2.99072266e-01 -4.77294922e-01
 -2.90771484e-01 -2.04711914e-01 -1.25854492e-01  4.47509766e-01
 -4.00390625e-01  1.39404297e-01  6.01562500e-01  3.05664062e-01
 -6.34277344e-01 -3.80615234e-01  4.18457031e-01 -3.73840332e-02
 -1.07812500e+00  4.36035156e-01  8.85620117e-02  2.20092773e-01
  5.80139160e-02 -4.72106934e-02  5.16601562e-01  2.34130859e-01
  2.51953125e-01 -7.36328125e-01  6.83784485e-04  1.18847656e+00
  7.44628906e-02  3.82324219e-01  8.48144531e-01  2.30560303e-02
 -4.05517578e-01  1.14550781e+00  5.63964844e-01  9.75585938e-01
  1.54101562e+00  8.34960938e-01  2.72460938e-01  1.80786133e-01
  2.99072266e-01  4.64355469e-01  1.00781250e+00  6.56250000e-01
  2.99804688e-01  3.79638672e-01  7.39135742e-02  9.99145508e-02
  3.61572266e-01 -1.58813477e-01  2.14965820e-01  2.75634766e-01
  6.28417969e-01  3.74511719e-01 -5.54687500e-01  4.44335938e-01
  3.69384766e-01  5.06835938e-01 -7.71972656e-01 -9.79492188e-01
  8.77075195e-02  4.69970703e-01  2.68066406e-01 -3.81103516e-01
 -1.22680664e-01  2.64404297e-01  3.99780273e-02 -1.52587891e-01
 -4.42871094e-01 -5.70312500e-01 -3.05938721e-03 -4.70458984e-01
 -1.50390625e+00  1.05468750e-01 -4.99023438e-01  5.54199219e-01
  5.18066406e-01 -1.02636719e+00 -5.51223755e-03 -6.62597656e-01
  5.17272949e-02  3.49426270e-02 -3.43322754e-02  6.65039062e-01
  3.18359375e-01  1.01318359e-01 -6.68457031e-01  8.16406250e-01
 -4.96582031e-01  8.44238281e-01 -1.65039062e-01 -1.56982422e-01
  4.36523438e-01 -6.83105469e-01 -6.84204102e-02 -8.40454102e-02
 -4.25537109e-01  1.12670898e-01 -6.40625000e-01 -6.76269531e-01
  2.87353516e-01 -1.35864258e-01 -6.54296875e-02 -8.25500488e-03
 -8.87695312e-01  6.92382812e-01  2.85888672e-01  2.35839844e-01
  7.38769531e-01  4.47998047e-01 -8.97460938e-01  7.52441406e-01
  1.72363281e-01 -1.83715820e-01 -5.83007812e-01  8.91113281e-01
  1.13476562e+00 -5.26123047e-02 -3.84765625e-01 -2.96875000e-01
 -4.03808594e-01 -2.21923828e-01  1.40869141e-01 -3.00537109e-01
  1.59667969e-01  7.21679688e-01 -1.40258789e-01 -1.06054688e+00
 -1.46606445e-01 -2.82958984e-01 -9.16992188e-01 -2.44873047e-01
 -3.19480896e-03  7.96875000e-01  4.62646484e-01  4.17236328e-01
 -7.28027344e-01 -2.75878906e-01  2.86621094e-01  9.90722656e-01
  8.94531250e-01 -6.43310547e-02 -1.51489258e-01  6.66503906e-01
 -3.40332031e-01  1.08154297e-01  1.35986328e-01 -3.75488281e-01
 -3.32275391e-01  1.00021362e-02  9.03930664e-02  4.10156250e-01
  2.90771484e-01  4.45556641e-01 -7.48291016e-02  3.09326172e-01
 -3.50585938e-01  1.30981445e-01  5.66894531e-01 -2.57568359e-01
  1.34399414e-01  1.24218750e+00  2.36358643e-02  7.24487305e-02
  6.76879883e-02 -2.62207031e-01 -2.90771484e-01 -4.42810059e-02
  1.26098633e-01 -1.42480469e+00  9.46044922e-02 -7.42675781e-01
 -1.51000977e-01  7.71484375e-02 -4.70886230e-02 -1.97949219e+00
  8.92089844e-01  3.21777344e-01  1.00097656e+00 -4.87548828e-01
  2.88330078e-01  4.91027832e-02  4.14794922e-01  9.23828125e-01
  6.38671875e-01 -2.85644531e-01 -4.51416016e-01 -5.56640625e-01
 -6.42089844e-01  2.47558594e-01 -5.45349121e-02  5.15136719e-01
 -2.41577148e-01  3.96240234e-01 -9.08203125e-01 -8.34960938e-01
  6.29882812e-01  8.63769531e-01  8.46191406e-01  1.06689453e-01
  2.32177734e-01 -3.45458984e-01  1.30371094e-01  3.29345703e-01
  1.09313965e-01  1.74682617e-01 -8.67675781e-01  3.55712891e-01
 -1.56616211e-01  2.38525391e-01 -7.98828125e-01  6.58203125e-01
 -1.70532227e-01  6.88476562e-01 -3.54736328e-01  3.19213867e-02
 -8.76464844e-01  1.08947754e-01  4.28955078e-01  1.00683594e+00
 -5.44433594e-01  1.09191895e-01  5.31921387e-02  2.76367188e-01
  5.47363281e-01 -2.10327148e-01 -3.50830078e-01 -4.75341797e-01
  7.90405273e-02  3.81103516e-01 -5.53222656e-01 -7.96386719e-01
 -4.05273438e-01 -3.06640625e-01 -9.11621094e-01  2.98095703e-01
  2.58300781e-01 -4.45556641e-01  4.60205078e-02 -5.83007812e-01
 -9.97314453e-02 -2.48046875e-01  3.44726562e-01 -2.40966797e-01
  4.15527344e-01 -6.60400391e-02  2.78564453e-01  3.66210938e-01
 -6.18164062e-01 -9.50195312e-01 -4.78515625e-01 -1.05273438e+00
  5.81542969e-01 -8.37402344e-01  5.66894531e-01 -1.15844727e-01
 -1.38549805e-01  1.38671875e-01  3.90380859e-01 -1.84936523e-01
  2.39990234e-01  2.50244141e-01  7.62695312e-01 -1.37451172e-01
 -4.07958984e-01 -2.83813477e-02  5.98144531e-02 -4.41650391e-01
  8.37402344e-01  1.12304688e-01 -8.52050781e-02  3.11035156e-01
  3.35693359e-01 -4.95605469e-01  1.22680664e-01  1.89453125e-01
  2.13378906e-01 -2.79541016e-01 -3.39599609e-01 -1.03988647e-02
 -3.99902344e-01  7.19238281e-01 -1.66137695e-01 -5.61523438e-01
 -5.11718750e-01 -9.53613281e-01 -4.44824219e-01 -2.66357422e-01
  3.81591797e-01  2.97607422e-01  7.45117188e-01  2.95166016e-01
  2.06054688e-01 -4.20654297e-01 -8.13964844e-01 -7.83691406e-01
 -2.44995117e-01 -9.44824219e-01  2.54394531e-01  3.89404297e-01
  9.46289062e-01 -3.80371094e-01 -7.86132812e-01  2.66113281e-01
 -1.03149414e-02 -2.36572266e-01 -5.38024902e-02  6.34765625e-01
  7.35839844e-01 -6.46591187e-03 -7.28759766e-02 -9.39941406e-02
  5.93566895e-02 -2.70996094e-01  5.04882812e-01 -2.83203125e-01
 -8.69628906e-01 -1.40991211e-01 -3.40332031e-01  9.56054688e-01
  4.22363281e-01 -6.24023438e-01 -5.94238281e-01  4.72656250e-01
  1.99340820e-01  6.45507812e-01  5.52246094e-01 -1.94824219e-01
 -9.61425781e-01 -9.53613281e-01 -2.71301270e-02 -2.78076172e-01
 -5.39550781e-01 -1.26367188e+00 -6.43066406e-01  3.18847656e-01
  1.03454590e-01  4.67529297e-01 -8.36425781e-01 -1.30653381e-03
 -5.80078125e-01  2.87109375e-01 -9.65332031e-01  2.78320312e-02
 -8.92578125e-01  6.27441406e-01 -4.44824219e-01  6.05957031e-01
 -2.60498047e-01  2.63671875e-01 -3.83544922e-01 -5.07812500e-02
  9.63867188e-01  8.77929688e-01 -6.52832031e-01 -4.58984375e-01
 -4.16259766e-01 -6.59179688e-01  2.46582031e-01  3.29833984e-01
 -9.89990234e-02  6.15722656e-01 -4.37500000e-01 -5.87402344e-01
 -9.58496094e-01 -3.46435547e-01 -1.20703125e+00  1.43188477e-01
  8.20800781e-01 -4.77294922e-01  4.85351562e-01 -5.76660156e-01
  1.42968750e+00 -4.63256836e-02  5.04150391e-02 -1.23046875e+00
 -1.20544434e-01 -6.52832031e-01 -4.51660156e-01  4.79492188e-01
 -4.39697266e-01  1.07788086e-01 -3.84277344e-01 -1.52465820e-01
  3.90136719e-01 -4.41650391e-01  2.65380859e-01  1.93652344e+00
 -1.63085938e-01  1.64306641e-01 -1.19140625e+00  5.29785156e-01
  1.03210449e-01 -7.11914062e-01 -4.25781250e-01 -3.48388672e-01
 -8.36425781e-01 -6.09863281e-01 -6.11816406e-01 -1.17871094e+00
 -7.58300781e-01  1.01867676e-01  1.46386719e+00 -2.99316406e-01
  4.30908203e-01  4.46777344e-01 -2.55859375e-01 -5.28320312e-01
  5.99609375e-01  5.09277344e-01  2.55859375e-01  1.12988281e+00
  3.19091797e-01  2.88574219e-01  7.98339844e-02 -1.70166016e-01
 -4.84375000e-01 -5.58105469e-01  4.32617188e-01  4.02343750e-01
  3.77502441e-02  7.89550781e-01  9.17480469e-01 -1.08984375e+00
 -1.10156250e+00 -2.07885742e-01 -3.16894531e-01 -1.07617188e+00
 -7.23632812e-01 -4.01367188e-01 -1.24389648e-01 -7.90527344e-01
  3.66020203e-03 -2.46826172e-01 -7.63671875e-01 -3.45947266e-01
 -1.92382812e-01 -4.93408203e-01 -5.52246094e-01 -1.07727051e-01
  1.00390625e+00 -5.34179688e-01  5.41015625e-01 -6.17675781e-01
 -8.60595703e-02  2.44384766e-01  7.81738281e-01  6.01562500e-01
  1.73217773e-01 -1.34643555e-01  6.65039062e-01 -1.04827881e-02
  1.56835938e+00 -5.44921875e-01  3.34228516e-01  3.26660156e-01
 -4.08203125e-01 -1.00976562e+00 -3.84277344e-01  4.38720703e-01
  6.56250000e-01  4.33105469e-01 -8.51562500e-01  4.35058594e-01
  1.12402344e+00 -3.14025879e-02  5.09765625e-01 -7.06787109e-02
  1.36108398e-01 -8.81835938e-01 -5.35156250e-01 -4.03442383e-02
  5.75561523e-02 -6.67968750e-01  1.10229492e-01  3.24707031e-01
 -2.02514648e-01 -4.78271484e-01  1.19628906e+00 -5.52734375e-01
  3.49609375e-01 -2.06420898e-01  3.73291016e-01 -5.61523438e-01
 -8.83300781e-01  1.18103027e-01 -4.65087891e-01  1.20056152e-01
  7.65136719e-01 -7.58300781e-01  1.31591797e-01 -1.14074707e-01
  3.93066406e-01 -1.30493164e-01 -1.72119141e-01 -1.86645508e-01
 -1.94580078e-01  1.94702148e-01 -5.44921875e-01  2.30102539e-01
  3.74145508e-02  4.27246094e-02  5.99060059e-02 -5.54199219e-01
  2.78808594e-01  1.67724609e-01 -6.48437500e-01  5.34973145e-02
  8.44726562e-01 -4.16015625e-01  9.81933594e-01 -5.62500000e-01
  3.18115234e-01 -8.56445312e-01 -2.73925781e-01 -1.82495117e-01
  5.23376465e-02  6.00585938e-01  3.49609375e-01  7.43652344e-01
  8.49121094e-01  2.78564453e-01 -1.09436035e-01 -9.95605469e-01
  7.97363281e-01  3.38623047e-01 -4.36523438e-01  5.47790527e-02
 -1.56860352e-02 -9.14306641e-02 -3.27392578e-01 -2.67089844e-01
  5.98632812e-01 -4.67041016e-01 -3.96728516e-01 -7.72460938e-01
 -2.75634766e-01 -1.37573242e-01  1.11022949e-01  1.48559570e-01
  1.01074219e+00  7.42675781e-01 -3.65722656e-01  5.73730469e-01
  2.46826172e-01 -4.40429688e-01 -1.61743164e-01 -2.52441406e-01
 -4.37744141e-01 -1.72576904e-02 -4.20837402e-02  3.32031250e-01
  1.61254883e-01 -4.09423828e-01 -2.12768555e-01  1.38183594e+00
  2.13623047e-01  5.21972656e-01  4.08935547e-01 -1.74926758e-01
 -4.71801758e-02 -7.13867188e-01 -1.10546875e+00 -1.19506836e-01
  2.12768555e-01 -1.20605469e+00 -4.16503906e-01 -7.73315430e-02
  3.41552734e-01  4.79736328e-01  1.31591797e-01 -1.64306641e-01
  1.63696289e-01 -4.71191406e-01 -9.08203125e-02 -1.55883789e-01
  4.80957031e-01 -3.38134766e-01 -6.14643097e-04 -9.38720703e-02
  4.82421875e-01  5.60607910e-02 -1.90917969e-01  7.43652344e-01
 -4.44335938e-01  1.08276367e-01  5.55664062e-01 -4.36096191e-02
 -5.97656250e-01  3.62060547e-01  2.71728516e-01  7.26318359e-02
  2.75878906e-01 -5.89355469e-01 -6.35253906e-01  7.46093750e-01
  4.07714844e-02  1.59057617e-01 -2.08129883e-01  4.06494141e-01
  3.10302734e-01 -5.74218750e-01 -7.29003906e-01  1.30957031e+00
  1.40380859e-01  6.92871094e-01 -3.46679688e-01 -7.82714844e-01
  5.16891479e-03 -3.85131836e-02 -6.72363281e-01 -2.33917236e-02
 -6.32324219e-01 -5.02441406e-01 -4.35302734e-01 -8.43750000e-01
  8.97460938e-01 -2.97393799e-02 -1.12890625e+00 -2.96875000e-01
  2.30468750e-01  4.41894531e-01  8.05664062e-01  1.13952637e-01
  2.58300781e-01  6.19140625e-01  4.11865234e-01  1.35644531e+00
  5.02929688e-01  8.83789062e-02 -1.46728516e-01 -2.34130859e-01
 -3.60107422e-02  3.25965881e-03  2.95166016e-01 -1.09375000e-01
 -1.10449219e+00 -1.15039062e+00  8.56445312e-01  4.50927734e-01
 -4.69970703e-01  5.89843750e-01  2.13623047e-01 -4.07226562e-01
 -4.88525391e-01  1.07360840e-01 -3.73291016e-01  3.32763672e-01
  4.99023438e-01 -5.78613281e-01 -1.08886719e-01  1.12890625e+00
  9.50683594e-01  7.62695312e-01 -2.62298584e-02  5.00000000e-01
  3.42529297e-01  9.34082031e-01  5.92285156e-01 -4.55078125e-01
  2.94921875e-01  4.72412109e-01 -6.04003906e-01 -1.28295898e-01
 -6.06689453e-02 -4.29931641e-01  5.71289062e-01  3.03710938e-01
 -8.76953125e-01  2.75634766e-01  3.39843750e-01 -4.76318359e-01
 -1.02441406e+00  3.16894531e-01  3.48876953e-01 -2.79052734e-01
  4.20166016e-01  2.29858398e-01  5.11230469e-01  5.15625000e-01
 -6.28417969e-01 -1.58325195e-01 -3.96728516e-01  2.98095703e-01
 -4.94140625e-01  7.72460938e-01 -5.46386719e-01 -5.27343750e-01
 -1.55883789e-01 -2.46337891e-01 -3.13232422e-01 -2.67333984e-01
  2.95166016e-01 -5.69824219e-01  3.78417969e-01  3.08349609e-01
  1.03808594e+00  1.04492188e-01 -1.28906250e+00 -7.38769531e-01
  7.26074219e-01  6.74804688e-01 -4.55566406e-01  1.59082031e+00
  8.20312500e-01 -2.86132812e-01 -5.48828125e-01 -2.70996094e-01
  9.29687500e-01  2.39501953e-01 -4.44091797e-01 -1.08215332e-01
  5.36621094e-01 -3.38134766e-01 -8.79882812e-01  2.96875000e-01
  8.08593750e-01  2.43652344e-01 -2.89001465e-02 -1.07617188e+00
  6.22558594e-03 -8.42773438e-01 -2.13012695e-01 -9.38476562e-01
  8.45703125e-01 -1.71508789e-02 -6.12792969e-01 -3.74267578e-01
 -1.09667969e+00  3.92382812e+00  3.29101562e-01  6.52343750e-01
  2.74414062e-01  9.66186523e-02  7.30957031e-01  6.69433594e-01
  6.64672852e-02  7.37792969e-01 -3.27148438e-01  4.52392578e-01
 -7.29980469e-02 -2.18750000e-01  3.76464844e-01 -4.50927734e-01
  2.75878906e-01 -1.65429688e+00  2.92480469e-01 -5.35156250e-01
 -2.72460938e-01 -4.23583984e-01  2.91015625e-01  1.58813477e-01
  7.56347656e-01  4.62890625e-01 -3.78417969e-02  3.96728516e-01
  1.94213867e-01  1.84082031e-01 -4.47753906e-01 -1.07299805e-01
 -2.60253906e-01  2.59765625e-01  1.62353516e-01  2.38776207e-04
  4.67773438e-01  6.00891113e-02 -2.04345703e-01 -1.17736816e-01
  6.42700195e-02 -5.55664062e-01 -3.88427734e-01  5.96679688e-01
 -2.00561523e-01 -8.94531250e-01  7.86132812e-01 -3.51562500e-01
  5.88867188e-01  3.39843750e-01 -1.60156250e-01  9.19921875e-01
 -5.16967773e-02  6.63085938e-01 -9.54589844e-01 -9.83886719e-01
 -1.36840820e-01 -2.67578125e-01 -7.40722656e-01 -2.66113281e-01
  1.35864258e-01 -2.94921875e-01  1.43585205e-02  4.83642578e-01
  4.07470703e-01 -2.73681641e-01  8.77929688e-01  2.17529297e-01
  2.92724609e-01 -6.12792969e-01 -9.41894531e-01  5.51452637e-02
  5.96191406e-01 -1.49291992e-01 -4.56787109e-01  2.30834961e-01
 -1.09863281e-02 -4.44824219e-01  3.50097656e-01  2.14355469e-01
 -1.78222656e-01  1.56005859e-01 -3.05908203e-01  1.58691406e-01
 -2.41699219e-01  1.46484375e-01  1.02734375e+00 -3.49853516e-01
  4.23828125e-01 -3.39599609e-01  5.82031250e-01 -8.81347656e-02
  3.48632812e-01  2.23999023e-01 -7.30590820e-02  2.32910156e-01] 1024
 ~/Documents/books/coreml-conversion  python3.11 convert_pytorch_coreml.py
/opt/homebrew/lib/python3.11/site-packages/transformers/modeling_utils.py:4713: FutureWarning: `_is_quantized_training_enabled` is going to be deprecated in transformers 4.39.0. Please use `model.hf_quantizer.is_trainable` instead
  warnings.warn(
Converting PyTorch Frontend ==> MIL Ops:   0%|                                                                                                    | 0/989 [00:00<?, ? ops/s]huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...
To disable this warning, you can either:
        - Avoid using `tokenizers` before the fork if possible
        - Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)
Core ML embedding (gather) layer does not support any inputs besides the weights and indices. Those given will be ignored.
Converting PyTorch Frontend ==> MIL Ops: 100%|███████████████████████████████████████████████████████████████████████████████████████▉| 988/989 [00:00<00:00, 2179.49 ops/s]
Running MIL frontend_pytorch pipeline: 100%|█████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:00<00:00, 29.39 passes/s]
Running MIL default pipeline:  64%|███████████████████████████████████████████████████████████████▋                                    | 56/88 [00:02<00:02, 14.83 passes/s]/opt/homebrew/lib/python3.11/site-packages/coremltools/converters/mil/mil/ops/defs/iOS15/elementwise_unary.py:894: RuntimeWarning: overflow encountered in cast
  return input_var.val.astype(dtype=string_to_nptype(dtype_val))
Running MIL default pipeline:  69%|█████████████████████████████████████████████████████████████████████▎                              | 61/88 [00:09<00:14,  1.91 passes/s]/opt/homebrew/lib/python3.11/site-packages/coremltools/converters/mil/mil/passes/defs/optimize_repeat_ops.py:433: RuntimeWarning: overflow encountered in cast
  max(cur_range.low, tmp_range.low), min(cur_range.high, tmp_range.high)
Running MIL default pipeline: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████| 88/88 [00:12<00:00,  7.27 passes/s]
Running MIL backend_mlprogram pipeline: 100%|██████████████████████████████████████████████████████████████████████████████████████████| 12/12 [00:00<00:00, 44.40 passes/s]
 ~/Documents/books/coreml-conversion  python3.11 run_coreml.py
CLS Token Embedding: [nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan] 1024

@NoahBPeterson
Copy link
Author

Here's a list of everything I have installed in pip:

Package                 Version     Editable project location
----------------------- ----------- -------------------------------------------
absl-py                 2.1.0
annotated-types         0.7.0
anyio                   4.6.0
attrs                   24.2.0
blobfile                3.0.0
cattrs                  24.1.2
certifi                 2024.8.30
charset-normalizer      3.3.2
click                   8.1.7
coremltools             8.0
Cython                  3.0.11
exporters               0.0.1       /Users/noahpeterson/Documents/exporters/src
filelock                3.16.1
fire                    0.6.0
fsspec                  2024.9.0
grpcio                  1.66.2
h11                     0.14.0
httpcore                1.0.5
httpx                   0.27.2
huggingface-hub         0.24.0
idna                    3.10
InstructorEmbedding     1.0.1
Jinja2                  3.1.4
joblib                  1.4.2
llama_models            0.0.35
llama_stack             0.0.35
llvmlite                0.43.0
lxml                    5.3.0
Markdown                3.7
markdown-it-py          3.0.0
MarkupSafe              2.1.5
mdurl                   0.1.2
mpmath                  1.3.0
networkx                3.3
nltk                    3.9.1
numpy                   2.1.1
onnx                    1.16.2
onnx-coreml             1.3
packaging               24.1
pillow                  10.4.0
pip                     24.2
prompt_toolkit          3.0.48
protobuf                5.28.2
pyaml                   24.9.0
pybind11                2.13.5
pycryptodomex           3.20.0
pydantic                2.9.2
pydantic_core           2.23.4
Pygments                2.18.0
python-dateutil         2.9.0.post0
python-dotenv           1.0.1
PyYAML                  6.0.2
regex                   2024.9.11
requests                2.32.3
rich                    13.8.1
ruamel.yaml             0.18.6
ruamel.yaml.clib        0.2.8
safetensors             0.4.5
scikit-learn            1.5.2
scipy                   1.14.1
sentence-transformers   3.1.1
sentencepiece           0.2.0
setuptools              74.1.2
six                     1.16.0
sniffio                 1.3.1
sympy                   1.13.3
tensorboard             2.18.0
tensorboard-data-server 0.7.2
termcolor               2.4.0
text-unidecode          1.3
threadpoolctl           3.5.0
tiktoken                0.7.0
tokenizers              0.19.1
torch                   2.4.0
tqdm                    4.66.5
transformers            4.44.2
typing                  3.7.4.3
typing_extensions       4.12.2
urllib3                 2.2.3
wcwidth                 0.2.13
Werkzeug                3.0.4
wget                    3.2
wheel                   0.44.0
wrapt                   1.16.0

@NoahBPeterson
Copy link
Author

NoahBPeterson commented Oct 3, 2024

I just created a new virtual environment and installed numpy, torch, transformers, and coremltools, and the issue still exists.

Package            Version
------------------ ---------
attrs              24.2.0
cattrs             24.1.2
certifi            2024.8.30
charset-normalizer 3.3.2
coremltools        8.0
filelock           3.16.1
fsspec             2024.9.0
huggingface-hub    0.25.1
idna               3.10
Jinja2             3.1.4
MarkupSafe         2.1.5
mpmath             1.3.0
networkx           3.3
numpy              2.1.1
packaging          24.1
pip                24.2
protobuf           5.28.2
pyaml              24.9.0
PyYAML             6.0.2
regex              2024.9.11
requests           2.32.3
safetensors        0.4.5
setuptools         74.1.2
sympy              1.13.3
tokenizers         0.20.0
torch              2.4.1
tqdm               4.66.5
transformers       4.45.1
typing_extensions  4.12.2
urllib3            2.2.3
python3.11 --version
Python 3.11.10
xcodebuild -version 
Xcode 16.0
Build version 16A242d

@junpeiz
Copy link
Collaborator

junpeiz commented Oct 4, 2024

If I set compute_precision=ct.precision.FLOAT32 in ct.convert, both iOS17 and iOS18 works well. It's due to fp16 numerical issue.

@junpeiz
Copy link
Collaborator

junpeiz commented Oct 4, 2024

Here are my experiments:

  • coremltools==8.0 + ct.precision.FLOAT32 + iOS17: works well
  • coremltools==8.0 + ct.precision.FLOAT32 + iOS18: works well
  • coremltools==8.0 + ct.precision.FLOAT16 + iOS17: works well
  • coremltools==8.0 + ct.precision.FLOAT16 + iOS18: nan
  • coremltools==8.0b2 + ct.precision.FLOAT16 + iOS17: works well
  • coremltools==8.0b2 + ct.precision.FLOAT16 + iOS18: nan

It's indeed an iOS18 fp16 op regression.

@junpeiz junpeiz added triaged Reviewed and examined, release as been assigned if applicable (status) and removed awaiting response Please respond to this issue to provide further clarification (status) labels Oct 4, 2024
@junpeiz
Copy link
Collaborator

junpeiz commented Oct 4, 2024

There are a lot of floating pieces. For example, I happened to find that transformers==4.38.2 will lead to nan even for iOS17, and updating to transformers==4.45.1 will solve the nan issue for iOS17.

I added this bug into our TODO list.
Hey @NoahBPeterson, if it's urgent on your side, I would suggest to bi-sect the model to figure out which layer introduces this nan. Thanks!

@NoahBPeterson
Copy link
Author

NoahBPeterson commented Oct 4, 2024

Unfortunately, bisecting the model fails with both the iOS17 and iOS18 version.

With this script:

import coremltools as ct

model_path = "mxbai-embed-large-v1-iOS18.mlpackage"
output_dir = "./output/"

ct.models.utils.bisect_model(
    model_path,
    output_dir,
    check_output_correctness=True
)

Both the mxbai-embed-large-v1-iOS17.mlpackage and mxbai-embed-large-v1-iOS18.mlpackage models produce this same error:

ERROR - 'common::topological_reorder' graph pass produces the following error:


Running MIL default pipeline:  98%|█████████▊| 84/86 [00:02<00:00, 28.06 passes/s]
Traceback (most recent call last):
  File "/Users/noahpeterson/Documents/books/coreml-conversion/coreml_bisect.py", line 9, in <module>
    ct.models.utils.bisect_model(
  File "/opt/homebrew/lib/python3.11/site-packages/coremltools/models/utils.py", line 1983, in bisect_model
    model_chunk2 = _mil_convert(
                   ^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/coremltools/converters/mil/converter.py", line 188, in mil_convert
    return _mil_convert(model, convert_from, convert_to, ConverterRegistry, MLModel, compute_units, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/coremltools/converters/mil/converter.py", line 212, in _mil_convert
    proto, mil_program = mil_convert_to_proto(
                         ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/coremltools/converters/mil/converter.py", line 291, in mil_convert_to_proto
    PassPipelineManager.apply_pipeline(prog, main_pipeline)
  File "/opt/homebrew/lib/python3.11/site-packages/coremltools/converters/mil/mil/passes/pass_pipeline.py", line 493, in apply_pipeline
    raise e  # re-raise exception
    ^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/coremltools/converters/mil/mil/passes/pass_pipeline.py", line 488, in apply_pipeline
    graph_pass(prog)
  File "/opt/homebrew/lib/python3.11/site-packages/coremltools/converters/mil/mil/passes/graph_pass.py", line 56, in __call__
    self.apply(prog)
  File "/opt/homebrew/lib/python3.11/site-packages/coremltools/converters/mil/mil/passes/defs/cleanup/topological_reorder.py", line 72, in apply
    self._move_operations_to_the_end_block(f, ["cast", "transpose"])
  File "/opt/homebrew/lib/python3.11/site-packages/coremltools/converters/mil/mil/passes/helper.py", line 64, in wrapper
    return _func(*args)
           ^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/coremltools/converters/mil/mil/passes/defs/cleanup/topological_reorder.py", line 112, in _move_operations_to_the_end_block
    new_var = getattr(mb, op.op_type)(**op.inputs, before_op=before_op)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/coremltools/converters/mil/mil/ops/registry.py", line 183, in add_op
    return cls._add_op(op_cls_to_add, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/coremltools/converters/mil/mil/builder.py", line 187, in _add_op
    new_op = op_cls(**kwargs)
             ^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/coremltools/converters/mil/mil/operation.py", line 190, in __init__
    self._validate_and_set_inputs(input_kv)
  File "/opt/homebrew/lib/python3.11/site-packages/coremltools/converters/mil/mil/operation.py", line 506, in _validate_and_set_inputs
    self.input_spec.validate_inputs(self.name, self.op_type, input_kvs)
  File "/opt/homebrew/lib/python3.11/site-packages/coremltools/converters/mil/mil/input_type.py", line 164, in validate_inputs
    raise ValueError(msg.format(name, var.name, input_type.type_str,
ValueError: Op "cast_0" (op_type: cast) Input x="gather_189_cast_uint16" expects tensor or scalar of dtype from type domain ['fp16', 'fp32', 'int32', 'bool'] but got uint16

Removing the check_output_correctness=True argument produces the exact output.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Unexpected behaviour that should be corrected (type) triaged Reviewed and examined, release as been assigned if applicable (status)
Projects
None yet
Development

No branches or pull requests

2 participants