ਸਿਰਲੇਖ: ਬੱਗ ਸਿਰਫ਼ ਇੱਕ ਐਕਸਿਸ (axis) ਦਾ ਸੀ

PyTorch ਦੇ chunked-scan ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ (implementation) ਵਿੱਚ ਇੱਕ ਲੁਕਿਆ ਹੋਇਆ ਬੱਗ ਕੁਝ ਹਾਈਬ੍ਰਿਡ ਮਾਡਲਾਂ ਨੂੰ ਭਵਿੱਖ ਦੇ ਟੋਕਨਾਂ (tokens) ਨੂੰ ਝਾਤ ਮਾਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ ਜਦੋਂ ਵੀ ਫਾਸਟ ਫਿਊਜ਼ਡ ਕਰਨਲਸ (fast fused kernels) ਗੈਰ-ਹਾਜ਼ਰ ਹੁੰਦੇ ਹਨ, ਜਿਸ ਨਾਲ Zamba2-1.2B ਅਤੇ Nemotron-H-8B ਵਰਗੇ ਚੈੱਕਪੁਆਇੰਟਸ (checkpoints) ਪ੍ਰਭਾਵਿਤ ਹੁੰਦੇ ਹਨ। ਇਹ ਖਾਮੀ ਗਲਤ ਐਕਸਿਸ (axis) ਦੇ ਨਾਲ ਕੀਤੇ ਗਏ ਇੱਕ ਸਿੰਗਲ ਰਿਡਕਸ਼ਨ (reduction) ਕਾਰਨ ਪੈਦਾ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਇਹ ਉਸ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਪਾਥ (execution path) 'ਤੇ ਸਾਹਮਣੇ ਆਉਂਦੀ ਹੈ ਜਿਸ 'ਤੇ ਜ਼ਿਆਦਾਤਰ CI ਪਾਈਪਲਾਈਨਾਂ ਅਤੇ CPU ਰਨ ਨਿਰਭਰ ਕਰਦੇ ਹਨ।

ਬੱਗ ਕਿਉਂ ਮਹੱਤਵਪੂਰਨ ਹੈ

ਹਾਈਬ੍ਰਿਡ ਅਤੇ ਸਟੇਟ-ਸਪੇਸ ਮਾਡਲ ਹੁਣ ਸਿਰਫ਼ ਅਟੈਂਸ਼ਨ (attention) 'ਤੇ ਨਿਰਭਰ ਨਹੀਂ ਹਨ; ਉਹ ਲੀਨੀਅਰ ਰੀਕਰੈਂਸਿਸ (linear recurrences), ਸਕੈਨਸ (scans), ਅਤੇ ਕਨਵੋਲਿਊਸ਼ਨਸ (convolutions) ਦੀ ਵੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ। ਅਟੈਂਸ਼ਨ ਮੈਟ੍ਰਿਕਸ ਵਿੱਚ ਭਵਿੱਖ ਦੇ ਟੋਕਨਾਂ ਨੂੰ ਰੋਕਣ ਵਾਲਾ ਮਾਸਕਿੰਗ ਆਪਰੇਸ਼ਨ (masking operation) ਉਹਨਾਂ ਵਾਧੂ ਆਪਰੇਸ਼ਨਾਂ ਲਈ ਕੌਜ਼ੈਲਿਟੀ (causality) ਦੀ ਆਪਣੇ ਆਪ ਗਾਰੰਟੀ ਨਹੀਂ ਦਿੰਦਾ। ਜਦੋਂ ਫਾਸਟ ਫਿਊਜ਼ਡ ਕਰਨਲਸ, ਜੋ ਆਮ ਤੌਰ 'ਤੇ ਸਕੈਨ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਸੰਭਾਲਦੇ ਹਨ, ਗੈਰ-ਹਾਜ਼ਰ ਹੁੰਦੇ ਹਨ, ਤਾਂ PyTorch ਇੱਕ ਪਿਓਰ-ਪਾਈਥਨ (pure-Python) chunked-scan ਪਾਥ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲੱਗਦਾ ਹੈ। ਉਸ ਫਾਲਬੈਕ (fallback) ਵਿੱਚ ਐਕਸਿਸ-ਮਿਕਸਅੱਪ (axis-mixup) ਹੁੰਦਾ ਹੈ, ਜੋ ਇਨਫਰੈਂਸ (inference) ਦੌਰਾਨ ਬਾਅਦ ਵਾਲੀਆਂ ਸਥਿਤੀਆਂ ਤੋਂ ਜਾਣਕਾਰੀ ਨੂੰ ਪਿੱਛੇ ਵਗਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।

ਇਹ ਲੀਕ (leak) ਚੁੱਪਚਾਪ ਹੁੰਦੀ ਹੈ। ਇਹ ਮਾਡਲ ਨੂੰ ਕ੍ਰੈਸ਼ ਨਹੀਂ ਕਰਦੀ ਜਾਂ ਕੋਈ ਸਪੱਸ਼ਟ ਗਲਤੀ (error) ਨਹੀਂ ਦਿਖਾਉਂਦੀ। ਇਸ ਦੀ ਬਜਾਏ, ਇਹ ਲੌਸ (loss) ਅਤੇ ਪਰਪਲੈਕਸਿਟੀ (perplexity) ਨੂੰ ਬਣਾਵਟੀ ਤੌਰ 'ਤੇ ਘੱਟ ਦਿਖਾਉਂਦੀ ਹੈ ਕਿਉਂਕਿ ਮਾਡਲ ਅਸਲ ਵਿੱਚ ਧੋਖਾ ਦੇ ਰਿਹਾ ਹੈ—ਉਹੀ ਟੋਕਨ ਦੇਖ ਰਿਹਾ ਹੈ ਜਿਨ੍ਹਾਂ ਦੀ ਉਸ ਨੂੰ ਭਵਿੱਖਬਾਣੀ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ। ਇਸ ਲਈ, ਕੋਈ ਵੀ ਡਾਊਨਸਟ੍ਰੀਮ (downstream) ਮੁਲਾਂਕਣ ਜੋ ਇਹਨਾਂ ਮੈਟ੍ਰਿਕਸ 'ਤੇ ਭਰੋਸਾ ਕਰਦਾ ਹੈ, ਉਹ ਇੱਕ ਟੁੱਟੇ ਹੋਏ ਅਧਾਰ 'ਤੇ ਬਣਿਆ ਹੁੰਦਾ ਹੈ।

ਸਮੱਸਿਆ ਦਾ ਪਤਾ ਕਿਵੇਂ ਲੱਗਿਆ

ਖੋਜਕਰਤਾਵਾਂ ਨੇ ਇੱਕੋ ਮਾਡਲ ਰਾਹੀਂ ਦੋ ਫਾਰਵਰਡ ਪਾਸ (forward passes) ਦੀ ਤੁਲਨਾ ਕੀਤੀ:

  1. ਇੱਕ ਰੈਂਡਮ ਟੋਕਨ ਸੀਕੁਐਂਸ (random token sequence)।
  2. ਇੱਕੋ ਜਿਹਾ ਸੀਕੁਐਂਸ ਜਿਸ ਵਿੱਚ ਇੱਕ ਟੋਕਨ ਬਦਲਿਆ ਗਿਆ ਹੋਵੇ।

ਉਨ੍ਹਾਂ ਨੇ ਲੇਅਰ-ਦਰ-ਲੇਅਰ ਹਿਡਨ ਸਟੇਟਸ (hidden states) ਵਿੱਚ ਅੰਤਰ ਮਾਪਿਆ। ਮਾਸਕ ਇੰਸਪੈਕਸ਼ਨ (mask inspection) ਵਿੱਚ ਕੁਝ ਵੀ ਸਾਹਮਣੇ ਨਹੀਂ ਆਇਆ, ਪਰ ਇੱਕ ਪਰ-ਲੇਅਰ ਆਡਿਟ (per-layer audit) ਜਿਸ ਵਿੱਚ ਫਾਲਟਸ (faults) ਇੰਜੈਕਟ ਕੀਤੇ ਗਏ ਸਨ, ਨੇ 192 ਵਿੱਚੋਂ 192 ਇੰਜੈਕਟ ਕੀਤੇ ਗਏ ਐਰਰਸ ਦਾ ਪਤਾ ਲਗਾਇਆ, ਜਿਸ ਨਾਲ ਲੀਕ ਦੀ ਪੁਸ਼ਟੀ ਹੋ ਗਈ।

transformers ਲਾਇਬ੍ਰੇਰੀ ਦੇ ਇੱਕ ਤੇਜ਼ ਸਰਵੇਖਣ ਤੋਂ ਪਤਾ ਲੱਗਾ:

  • Zamba2-1.2B ਉਦੋਂ ਲੀਕ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਚੰਕ ਸਾਈਜ਼ (chunk size) 256 'ਤੇ ਸੈੱਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
  • Nemotron-H-8B 128 ਦੇ ਚੰਕ ਸਾਈਜ਼ 'ਤੇ ਲੀਕ ਹੁੰਦਾ ਹੈ।
  • ਬਾਕੀ ਜ਼ਿਆਦਾਤਰ ਚੈੱਕਪੁਆਇੰਟਸ ਨੇ ਅਜਿਹੇ ਹੀ ਹਾਲਾਤਾਂ ਵਿੱਚ ਕੋਈ ਲੀਕੇਜ ਨਹੀਂ ਦਿਖਾਇਆ।

ਇਹ ਖਾਮੀ chunked-scan ਕੋਡ ਪਾਥ ਵਿੱਚ ਹੈ ਜੋ ਉਦੋਂ ਚੱਲਦਾ ਹੈ ਜਦੋਂ ਵੀ ਵਿਕਲਪਿਕ ਫਿਊਜ਼ਡ ਕਰਨਲਸ (optional fused kernels) ਗੈਰ-ਹਾਜ਼ਰ ਹੁੰਦੇ ਹਨ। ਇਸ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ:

  • ਸਾਰਾ CPU ਐਗਜ਼ੀਕਿਊਸ਼ਨ।
  • ਬਿਨਾਂ ਵਿਸ਼ੇਸ਼ ਫਿਊਜ਼ਡ-ਕਰਨਲ ਪੈਕੇਜਾਂ ਵਾਲੇ GPU ਵਾਤਾਵਰਣ।
  • ਸਟੈਂਡਰਡ PyTorch ਇੰਸਟਾਲੇਸ਼ਨਾਂ ਜੋ ਵਾਧੂ ਡਿਪੈਂਡੈਂਸੀਆਂ (dependencies) ਨੂੰ ਛੱਡ ਦਿੰਦੀਆਂ ਹਨ।

ਕਿਉਂਕਿ ਬੱਗ ਉਦੋਂ ਹੀ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ ਜਦੋਂ ਉਹ ਕਰਨਲਸ ਗੈਰ-ਹਾਜ਼ਰ ਹੁੰਦੇ ਹਨ, ਇਸ ਲਈ ਇਹ CI ਵਾਤਾਵਰਣਾਂ ਅਤੇ CPU 'ਤੇ ਸਾਹਮਣੇ ਆ ਸਕਦਾ ਹੈ।

ਕੌਣ ਜੋਖਮ ਵਿੱਚ ਹੈ ਅਤੇ ਇਸਦੀ ਕੀ ਕੀਮਤ ਹੈ

ਕੋਈ ਵੀ ਟੀਮ ਜੋ ਫਿਊਜ਼ਡ ਕਰਨਲਸ ਤੋਂ ਬਿਨਾਂ ਹਾਈਬ੍ਰਿਡ ਮਾਡਲਾਂ ਨੂੰ ਟ੍ਰੇਨ (train), ਫਾਈਨ-ਟਿਊਨ (fine-tune) ਜਾਂ ਮੁਲਾਂਕਣ ਕਰਦੀ ਹੈ, ਉਹ ਵਧਾ-ਚੜ੍ਹਾ ਕੇ ਪ੍ਰਦਰਸ਼ਨ ਦੇ ਅੰਕੜੇ ਪ੍ਰਕਾਸ਼ਿਤ ਕਰਨ ਦੇ ਜੋਖਮ ਵਿੱਚ ਹੈ। ਲੌਸ ਜਾਂ ਪਰਪਲੈਕਸਿਟੀ ਵਿੱਚ ਦਿਖਾਈ ਦੇਣ ਵਾਲੀ ਸੁਧਾਰ ਸਿਰਫ਼ ਇੱਕ ਭਰਮ ਹੈ; ਮਾਡਲ ਨੇ ਅਸਲ ਵਿੱਚ "ਅੱਗੇ ਦੇਖ ਲਿਆ" ਹੈ। ਖੋਜ ਸਮੂਹਾਂ ਲਈ, ਇਹ ਸਟੇਟ-ਆਫ-ਦ-ਆਰਟ (state-of-the-art) ਨਤੀਜਿਆਂ ਬਾਰੇ ਗਲਤ ਦਾਅਵੇ ਕਰਨ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦਾ ਹੈ। ਵਪਾਰਕ ਤੈਨਾਤੀਆਂ (commercial deployments) ਲਈ, ਇਹ ਜਨਰੇਸ਼ਨ ਟਾਸਕਾਂ ਵਿੱਚ ਡਾਊਨਸਟ੍ਰੀਮ ਗਲਤੀਆਂ ਪੈਦਾ ਕਰ ਸਕਦਾ ਹੈ ਜੋ ਕਦੇ ਵੀ ਸਹੀ ਤਰ੍ਹਾਂ ਸਿੱਖੀਆਂ ਨਹੀਂ ਗਈਆਂ ਸਨ।

ਵਿਰੋਧੀ ਦਲੀਲ

ਕੁਝ ਡਿਵੈਲਪਰਾਂ ਦਾ ਤਰਕ ਹੈ ਕਿ ਭਵਿੱਖ ਦੇ ਟੋਕਨ ਲੀਕੇਜ ਨੂੰ ਰ