Google ਦੇ Gemma-4 31B ਮਾਡਲ ਨੂੰ AWS Inferentia2 inf2.24xlarge 'ਤੇ ਪੋਰਟ ਕਰਨ ਨਾਲ CPU ਰੈਫਰੈਂਸ ਦੇ ਬਿਲਕੁਲ ਬਰਾਬਰ (token-for-token) ਨਤੀਜੇ ਮਿਲੇ—ਪਰ ਹਰ ਬਣਿਆ ਹੋਇਆ ਵਾਕ ਬੇਤੁਕਾ (gibberish) ਸੀ। "ਮੈਚ ਹੋਣ" ਅਤੇ "ਕੰਮ ਕਰਨ" ਵਿਚਕਾਰਲਾ ਇਹ ਅੰਤਰ ਹੁਣ ਉਨ੍ਹਾਂ ਸਾਰਿਆਂ ਲਈ ਇੱਕ ਚੇਤਾਵਨੀ ਹੈ ਜੋ Amazon ਦੇ ਕਸਟਮ ਇਨਫਰੈਂਸ ਚਿਪਸ 'ਤੇ ਵੱਡੇ LLMs ਚਲਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੇ ਹਨ।
ਇੱਕ-ਇੱਕ ਟੋਕਨ ਦਾ ਮੈਚ ਹੋਣਾ ਕਿਉਂ ਕਾਫ਼ੀ ਨਹੀਂ ਹੈ
ਡਿਵੈਲਪਰ ਨੇ Inferentia ਡਿਵਾਈਸ ਤੋਂ ਹਰੇਕ ਆਉਟਪੁੱਟ ਟੋਕਨ ਦੀ ਮਾਡਲ ਦੇ CPU ਰਨ ਨਾਲ ਤੁਲਨਾ ਕੀਤੀ। ਸਟ੍ਰੀਮਜ਼ ਬਿਲਕੁਲ ਇੱਕੋ ਜਿਹੀਆਂ ਸਨ, ਇਸ ਲਈ ਹਾਰਡਵੇਅਰ ਨੇ ਰੈਫਰੈਂਸ ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ ਨੂੰ ਬਿਲਕੁਲ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਦੁਹਰਾਇਆ ਜਾਪਦਾ ਸੀ। ਅਸਲ ਵਿੱਚ, ਦੋਵੇਂ ਸਟ੍ਰੀਮਜ਼ ਨੇ ਇੱਕ ਮਾਡਲ ਵਿੱਚ ਇੱਕ ਗਲਤ ਪ੍ਰੋਂਪਟ (malformed prompt) ਭੇਜਿਆ ਸੀ ਜਿਸ ਵਿੱਚੋਂ ਚੈਟ ਟੈਂਪਲੇਟ (chat template) ਹਟਾ ਦਿੱਤਾ ਗਿਆ ਸੀ ਅਤੇ ਗਲਤ ਟਰਨ ਮਾਰਕਰ ਦਿੱਤੇ ਗਏ ਸਨ। ਟੈਂਪਲੇਟ ਦੀ ਘਾਟ ਨੇ ਮਾਡਲ ਨੂੰ ਇੱਕ ਅਨੰਤ ਲੂਪ (infinite loop) ਵਿੱਚ ਪਾ ਦਿੱਤਾ, ਜਿਸ ਨਾਲ ਬੇਤੁਕਾ ਡਾਟਾ ਨਿਕਲਣ ਲੱਗਾ। ਹਾਰਡਵੇਅਰ ਨੇ ਆਪਣਾ ਕੰਮ ਕੀਤਾ—ਇਸ ਨੇ ਉਸ ਬੱਗ (bug) ਨੂੰ ਦੁਹਰਾਇਆ ਜੋ ਰੈਫਰੈਂਸ ਕੋਡ ਵਿੱਚ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਸੀ।
ਸਬਕ ਸਧਾਰਨ ਹੈ: SEQ_MATCH (ਸਕੁਐਂਸ਼ੀਅਲ ਟੋਕਨ ਸਮਾਨਤਾ) ਦਾ ਮਤਲਬ ਸਹੀ ਹੋਣਾ ਨਹੀਂ ਹੈ। ਜੇਕਰ ਰੈਫਰੈਂਸ ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ ਖਰਾਬ ਹੈ, ਤਾਂ ਇੱਕ ਵਫ਼ਾਦਾਰ ਹਾਰਡਵੇਅਰ ਰੈਪਲਿਕਾ ਵੀ ਉਹੀ ਅਸਫਲਤਾ ਅਪਣਾ ਲੈਂਦਾ ਹੈ। ਵੈਲੀਡੇਸ਼ਨ (Validation) ਟੋਕਨ-ਲੇਵਲ ਦੀ ਸਮਾਨਤਾ ਤੋਂ ਅੱਗੇ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ; ਇਸ ਲਈ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਫਾਰਮੈਟ ਕੀਤੇ ਇਨਪੁੱਟਸ ਦੇ ਨਾਲ ਐਂਡ-ਟੂ-ਐਂਡ ਫੰਕਸ਼ਨਲ ਚੈੱਕ ਦੀ ਲੋੜ ਹੈ।
ਪੈਰਾਮੀਟਰਾਂ ਦੇ ਰੂਪ ਵਿੱਚ ਦਿਖਣ ਵਾਲੇ ਬਫਰਸ (Buffers)
ਲੋਡ ਫੇਜ਼ ਦੌਰਾਨ ਮਾਡਲ ਲੋਡਰ ਨੇ layer_scalar ਨਾਮ ਦੇ ਇੱਕ ਕੰਪੋਨੈਂਟ ਨੂੰ ਛੱਡ ਦਿੱਤਾ। ਕੋਡ ਨੇ PyTorch ਮਾਡਲ ਡੈਫੀਨੇਸ਼ਨ ਵਿੱਚ ਇਸ ਆਬਜੈਕਟ ਨੂੰ ਪੈਰਾਮੀਟਰ ਦੀ ਬਜਾਏ ਇੱਕ ਬਫਰ (buffer) ਵਜੋਂ ਰਜਿਸਟਰ ਕੀਤਾ। ਬਫਰਸ ਸਟੈਟਿਕ ਟੈਂਸਰ (static tensors) ਹੁੰਦੇ ਹਨ ਜਿਨ੍ਹਾਂ ਨੂੰ ਟ੍ਰੇਨਿੰਗ ਅਪਡੇਟ ਨਹੀਂ ਕਰਦੀ, ਅਤੇ ਕਈ ਲੋਡਰ Neuron-ਕੰਪੈਟਿਬਲ ਫਾਰਮੈਟਾਂ ਵਿੱਚ ਬਦਲਣ ਵੇਲੇ ਉਹਨਾਂ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਦਿੰਦੇ ਹਨ। ਇਸ ਨੂੰ ਛੱਡਣ ਨਾਲ ਕਈ ਲੇਅਰਾਂ ਦੇ ਸਕੈਲਿੰਗ ਫੈਕਟਰ (scaling factors) ਉਹਨਾਂ ਦੇ ਡਿਫੌਲਟ ਮੁੱਲਾਂ 'ਤੇ ਰਹਿ ਗਏ, ਜਿਸ ਨਾਲ ਪੂਰੇ ਨੈੱਟਵਰਕ ਵਿੱਚ ਗਣਿਤ ਵਿਗੜ ਗਿਆ। ਕੋਈ ਐਰਰ (error) ਨਹੀਂ ਆਇਆ; ਮਾਡਲ ਕੰਪਾਈਲ ਹੋ ਗਿਆ, ਅਤੇ ਇਨਫਰੈਂਸ ਪਾਈਪਲਾਈਨ ਚੱਲੀ, ਪਰ ਨੰਬਰਲ ਰਿਜ਼ਲਟ (numerical results) ਗਲਤ ਸਨ।
ਜੋ ਕੋਈ ਵੀ ਵੱਡੇ ਮਾਡਲਾਂ ਨੂੰ Inferentia 'ਤੇ ਲਿਜਾ ਰਿਹਾ ਹੈ, ਉਹ ਹਰ ਨਾਨ-ਪੈਰਾਮੀਟਰ ਟੈਂਸਰ ਦੀ ਜਾਂਚ ਕਰੇ। ਭਾਵੇਂ ਕੋਈ ਟੈਂਸਰ ਸਿੱਖਣ (learning) ਲਈ ਨਾ ਹੋਵੇ, ਫਿਰ ਵੀ ਇਹ ਸਹੀ ਫਾਰਵਰਡ-ਪਾਸ ਕੰਪਿਊਟੇਸ਼ਨ ਲਈ ਜ਼ਰੂਰੀ ਹੋ ਸਕਦਾ ਹੈ। ਬਫਰ ਦੀ ਸ਼ਮੂਲੀਅਤ ਦੀ ਮੈਨੂਅਲ ਜਾਂਚ ਕਰਨ ਨਾਲ ਅਜਿਹੇ ਸਾਈਲੈਂਟ ਸਕੈਲ ਐਰਰਾਂ (silent scale errors) ਤੋਂ ਬਚਿਆ ਜਾ ਸਕਦਾ ਹੈ ਜੋ ਹੋਰਨਾਂ ਤਰੀਕਿਆਂ ਨਾਲ ਲੱਭਣਾ ਮੁਸ਼ਕਲ ਹੁੰਦਾ ਹੈ।
ਸਪੌਟ-ਇੰਸਟੈਂਸ ਦੀ ਅਸਥਿਰਤਾ ਅਤੇ 39-ਮਿੰਟ ਦਾ ਕੰਪਾਈਲ
ਸਪੌਟ ਇੰਸਟੈਂਸ (spot instance) 'ਤੇ 31-ਬਿਲੀਅਨ-ਪੈਰਾਮੀਟਰ ਵਾਲਾ ਮਾਡਲ ਚਲਾਉਣਾ ਸਸਤਾ ਲੱਗਦਾ ਹੈ, ਪਰ ਇਸ ਬਚਤ ਦੇ ਨਾਲ ਅਣਪਛਾਤੇ ਰੀਕਲੇਮ ਇਵੈਂਟਸ (reclaim events) ਵੀ ਆਉਂਦੇ ਹਨ। ਡਿਵੈਲਪਰ ਦਾ ਕੰਪਾਈਲ ਸਮਾਂ—ਮਾਡਲ ਨੂੰ Neuron-ਕੰਪੈਟਿਬਲ ਕੋਡ ਵਿੱਚ ਬਦਲਣ ਲਈ ਲਗਭਗ 39 ਮਿੰਟ—ਉਦੋਂ ਖਤਮ ਹੋ ਗਿਆ ਜਦੋਂ AWS ਨੇ ਇੰਸਟੈਂਸ ਨੂੰ ਵਾਪਸ ਲੈ ਲਿਆ। ਰੁਕਾਵਟਾਂ ਤੋਂ ਬਚਣ ਲਈ ਉਨ੍ਹਾਂ ਨੇ ਤਿੰਨ-ਪੱਖੀ ਸੁਰੱਖਿਆ ਜਾਲ ਬਣਾਇਆ:
- ModelBuilder ਨੇ ਮੈਮੋਰੀ ਦੀ ਵਰਤੋਂ ਨੂੰ 384 GB ਹੋਸਟ ਸੀਮਾ ਦੇ ਅੰਦਰ ਰੱਖਿਆ, ਜਿਸ ਨਾਲ ਕ੍ਰੈਸ਼ ਹੋਣ ਤੋਂ ਬਚਾਅ ਹੋ ਸਕਿਆ ਜੋ ਰੀਸਟਾਰਟ ਕਰਨ ਲਈ ਮਜਬੂਰ ਕਰਦੇ।
- ਰੂਅ ਮੇਟ (raw weight) ਫਾਈਲਾਂ ਅਤੇ ਕੰਪਾਈਲਡ “neffs” (Neuron executable files) ਦੋਵਾਂ ਦੀ ਤੁਰੰਤ S3 ਮਿਰਰਿੰਗ ਨੇ ਇੱਕ ਨਵੇਂ ਇੰਸਟੈਂਸ ਨੂੰ ਉੱਥੇ ਹੀ ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੱਤੀ ਜਿੱਥੇ ਪਿਛਲਾ ਇੰਸਟੈਂਸ ਰੁਕਿਆ ਸੀ।
- ਇੱਕ ਮਲਟੀ-ਰੀਜਨ ਪੋਲਰ (multi-region poller) ਨੇ ਉਪਲਬਧ ਸਪੌਟ ਸਮਰੱਥਾ ਲਈ AWS ਰੀਜਨਾਂ ਦੀ ਜਾਂਚ ਕੀਤੀ ਅਤੇ ਜਿਵੇਂ ਹੀ ਕੋਈ ਮਿਲਿਆ, ਨਵਾਂ ਇੰਸਟੈਂਸ ਲਾਂਚ ਕਰ ਦਿੱਤਾ।
ਇਹਨਾਂ ਕਦਮਾਂ ਨੇ ਇੱਕ ਕਮਜ਼ੋਰ, ਸਿੰਗਲ-ਪੁਆਇੰਟ ਕੰਪਾਈਲ ਨੂੰ ਇੱਕ ਲਚਕਦਾਰ ਪਾਈਪਲਾਈਨ ਵਿੱਚ ਬਦਲ ਦਿੱਤਾ ਜੋ ਸਪੌਟ ਮਾਰਕੀਟਾਂ ਦੇ ਉਤਾਰ-ਚੜ੍ਹਾਅ ਵਿੱਚ ਟਿਕ ਸਕਦੀ ਹੈ।
ਮਿਕਸਡ ਅਟੈਂਸ਼ਨ ਲੇਆਉਟਸ ਨਾਲ ਸ਼ਾਰਡਿੰਗ ਦੀਆਂ ਮੁਸ਼ਕਲਾਂ
Gemma-4 31B ਦੋ ਅਟੈਂਸ਼ਨ ਕੌਂਫਿਗਰੇਸ਼ਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਕੁਝ ਲੇਅਰਾਂ ਚਾਰ ਕੀ-ਵੈਲਯੂ (KV) ਹੈਡਸ ਦੀ ਵਰਤੋਂ ਕਰਦੀਆਂ ਹਨ, ਕੁਝ ਵੱਖਰੀ ਗਿਣਤੀ ਦੀ। ਮਾਡਲ ਨੂੰ ਅੱਠ ਪੈਰਲ ਰੈਂਕਸ (parallel ranks) ਵਿੱਚ ਬਰਾਬਰ ਵੰਡਣਾ ਉਦੋਂ ਫੇਲ ਹੋ ਜਾਂਦਾ ਹੈ ਜਦੋਂ ਕਿਸੇ ਲੇਅਰ ਦੇ KV ਹੈਡ ਦੀ ਗਿਣਤੀ ਪੂਰੀ ਤਰ੍ਹਾਂ ਵੰਡੀ ਨਾ ਜਾ ਸਕੇ। ਇੱਕ 4-ਹੈੱਡ ਵਾਲੀ ਲੇਅਰ ਨੂੰ ਅੱਠ ਰੈਂਕਸ ਵਿੱਚ ਵੰਡਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਨਾਲ ਹਰੇਕ ਰੈਂਕ ਨੂੰ ਅੱਧਾ ਹੈੱਡ ਸੰਭਾਲਣਾ ਪਵੇਗਾ—ਇੱਕ ਗਣਿਤਿਕ ਅਸੰਭਵਤਾ ਜੋ ਸ਼ੇਪ ਮਿਸਮੈਚ (shape mismatches) ਅਤੇ ਰਨਟਾਈਮ ਐਰਰਾਂ ਨੂੰ ਜਨਮ ਦਿੰਦੀ ਹੈ।
ਇਸ ਦਾ ਹੱਲ ਗਲੋਬਲੀ-ਸ਼ਾਰਡਡ ਲੇਅਰਾਂ ਨੂੰ ਰੀਪਲੀਕੇਟ ਕਰਨਾ (ਉਹਨਾਂ ਨੂੰ ਜਿਨ੍ਹਾਂ ਦੀ ਹੈਡ ਗਿਣਤੀ ਅਨੁਕੂਲ ਹੈ) ਸਾਰੇ ਰੈਂਕਸ ਵਿੱਚ ਸੀ ਅਤੇ ਸਿਰਫ਼ ਉਹਨਾਂ "ਸਲਾਈਡਿੰਗ" ਲੇਅਰਾਂ ਨੂੰ ਸ਼ਾਰਡ ਕਰਨਾ ਸੀ ਜਿਨ੍ਹਾਂ ਦੀ ਹੈਡ ਗਿਣਤੀ ਬਰਾਬਰ ਵੰਡ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀ ਸੀ। ਇਸ ਹਾਈਬ੍ਰਿਡ ਰਣਨੀਤੀ ਨੇ ਟੈਂਸਰ-ਪੈਰਲਲ ਕੁਸ਼ਲਤਾ ਨੂੰ ਬਣਾਈ ਰੱਖਿਆ ਅਤੇ KV ਹੈਡਸ ਦੇ ਗੈਰ-ਕਾਨੂੰਨੀ ਵੰਡ ਤੋਂ ਬਚਿਆ, ਜਿਸ ਨਾਲ ਟੈਂਸਰ-ਪੈਰਲਲਾਈਜ਼ੇਸ਼ਨ ਦੀਆਂ ਗਲਤੀਆਂ ਖਤਮ ਹੋ ਗਈਆਂ ਜੋ ਪਹਿਲਾਂ ਦੀਆਂ ਕੋਸ਼ਿਸ਼ਾਂ ਵਿੱਚ ਆ ਰਹੀਆਂ ਸਨ।
ਸਿੱਖ (Takeaway)
ਇੱਕ ਵਿਸ਼ਾਲ LLM ਨੂੰ Inferentia 'ਤੇ ਪੋਰਟ ਕਰਨਾ ਸਿਰਫ਼ ਕੰਪਾਈਲ-ਅੰਡ-ਰਨ ਅਭਿਆਸ ਤੋਂ ਕਿਤੇ ਵੱਧ ਹੈ। ਇਸ ਲਈ ਟੋਕਨ ਸਮਾਨਤਾ ਤੋਂ ਇਲਾਵਾ ਸਖ਼ਤ ਫੰਕਸ਼ਨਲ ਟੈਸਟਿੰਗ, ਹਰ ਟੈਂਸਰ—ਪੈਰਾਮੀਟਰ ਜਾਂ ਬਫਰ—ਦੀ ਸਹੀ ਸੰਭਾਲ ਦੀ ਬਾਰੀਕ ਜਾਂਚ, ਅਤੇ ਇੱਕ ਅਜਿਹੀ ਡਿਪਲੋਇਮੈਂਟ ਰਣਨੀਤੀ ਦੀ ਲੋੜ ਹੈ ਜੋ ਸਪੌਟ-ਇੰਸਟੈਂਸ ਰੀਕਲੇਮੇਸ਼ਨ ਦਾ ਅੰਦਾਜ਼ਾ ਲਗਾ ਸਕੇ। ਅੰਤ ਵਿੱਚ, ਸ਼ਾਰਡਿੰਗ ਨੂੰ ਮਾਡਲ ਦੀ ਅੰਦਰੂਨੀ ਅਟੈਂਸ਼ਨ ਜਿਓਮੈਟਰੀ ਦਾ ਸਨਮਾਨ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ; ਨਹੀਂ ਤਾਂ, ਪੈਰਲਲਿਜ਼ਮ ਜੋ ਰਫ਼ਤਾਰ ਦਾ ਵਾਅਦਾ ਕਰਦੀ ਹੈ, ਉਹ ਚੁੱਪਚਾਪ ਅਸਫਲਤਾ ਦਾ ਸਰੋਤ ਬਣ ਜਾਂਦੀ ਹੈ।
