{ "
Here is the code for layers of GPT-NeoX model and the code to load 20B checkpoint.
\nThe method _^_0_^_ in the layers load the checkpoints of that layer. The checkpoint loading helpers are on _^_1_^_
\n": "\u0da2\u0dd3\u0db4\u0dd3\u0da7\u0dd3-\u0db1\u0dd2\u0dba\u0ddd\u0d9a\u0dca\u0dc3\u0dca\u0d86\u0d9a\u0dd8\u0dad\u0dd2\u0dba\u0dda \u0dc3\u0dca\u0dae\u0dbb \u0dc3\u0db3\u0dc4\u0dcf \u0d9a\u0dda\u0dad\u0dba \u0dc3\u0dc4 20B \u0db8\u0dd4\u0dbb\u0db4\u0ddc\u0dbd \u0db4\u0dd6\u0dbb\u0dab\u0dba \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dda \u0d9a\u0dda\u0dad\u0dba \u0db8\u0dd9\u0db1\u0dca\u0db1.
\n\u0dc3\u0dca\u0dae\u0dbb _^_0_^_ \u0dc0\u0dbd \u0d87\u0dad\u0dd2 \u0d9a\u0dca\u0dbb\u0db8\u0dba \u0d91\u0db8 \u0dc3\u0dca\u0dae\u0dbb\u0dba\u0dda \u0db8\u0dd4\u0dbb\u0db4\u0ddc\u0dbd\u0dc0\u0dbd\u0dca \u0db4\u0dd6\u0dbb\u0dab\u0dba \u0d9a\u0dbb\u0dba\u0dd2. \u0db8\u0dd4\u0dbb\u0db4\u0ddc\u0dbd\u0dc0\u0dbd\u0dca \u0db4\u0dd0\u0da7\u0dc0\u0dd3\u0db8\u0dda \u0dc3\u0dc4\u0dcf\u0dba\u0d9a\u0dba\u0db1\u0dca \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dad\u0dca\u0db8\u0d9a \u0dc0\u0dda _^_1_^_
\n", "This is a standard embeddings layer with code to load the checkpoint.
\n": "\u0db8\u0dd9\u0dba\u0db8\u0dd4\u0dbb\u0db4\u0ddc\u0dbd\u0da7 \u0db4\u0dd0\u0da7\u0dc0\u0dd3\u0db8 \u0dc3\u0db3\u0dc4\u0dcf \u0d9a\u0dda\u0dad\u0dba \u0dc3\u0dc4\u0dd2\u0dad \u0dc3\u0db8\u0dca\u0db8\u0dad \u0d9a\u0dcf\u0dc0\u0dd0\u0daf\u0dca\u0daf\u0dd3\u0db8\u0dca \u0dc3\u0dca\u0dae\u0dbb\u0dba\u0d9a\u0dd2.
\n", "GPT-NeoX uses rotary positional embeddings (RoPE).
\nWE have annotated implementation of RoPE here with more notes the theory.
\n": "\u0da2\u0dd3\u0db4\u0dd3\u0da7\u0dd3-\u0db1\u0dd2\u0dba\u0ddd\u0d9a\u0dca\u0dc3\u0dca \u0db7\u0dca\u0dbb\u0db8\u0dab \u0dc3\u0dca\u0dae\u0dcf\u0db1\u0dd3\u0dba \u0d9a\u0dcf\u0dc0\u0dd0\u0daf\u0dca\u0daf\u0dd3\u0db8\u0dca (\u0d9a\u0db9\u0dba)\u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf \u0d9a\u0dbb\u0dba\u0dd2.
\n\u0d85\u0db4\u0dd2\u0db1\u0dca\u0dba\u0dcf\u0dba \u0dc0\u0dd0\u0da9\u0dd2 \u0dc3\u0da7\u0dc4\u0db1\u0dca \u0dc3\u0db8\u0d9f \u0db8\u0dd9\u0dc4\u0dd2 \u0d9a\u0db9\u0dba \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dad\u0dca\u0db8\u0d9a \u0d9a\u0dd2\u0dbb\u0dd3\u0db8 \u0dc0\u0dd2\u0dc3\u0dca\u0dad\u0dbb \u0d9a\u0dbb \u0d87\u0dad.
\n", "The layers are generated in the same order as checkpoints.
\nIt gives _^_0_^_ when a layer is not available; we use the layer indices as NeoX and there are two transformation layers we don't need in our implementation.
\n\u0dc3\u0dca\u0dae\u0dbb \u0da2\u0db1\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dd4 \u0dbd\u0db6\u0db1\u0dca\u0db1\u0dda \u0db8\u0dd4\u0dbb\u0db4\u0ddc\u0dbd\u0dc0\u0dbd\u0dca \u0db8\u0dd9\u0db1\u0dca \u0d91\u0d9a\u0db8 \u0d85\u0db1\u0dd4\u0db4\u0dd2\u0dc5\u0dd2\u0dc0\u0dd9\u0dbd\u0d9a\u0dd2.
\n\u0dc3\u0dca\u0dae\u0dbb\u0dba\u0d9a\u0dca \u0db1\u0ddc\u0db8\u0dd0\u0dad\u0dd2_^_0_^_ \u0dc0\u0dd2\u0da7 \u0d91\u0dba \u0dbd\u0db6\u0dcf \u0daf\u0dd9\u0dba\u0dd2; \u0d85\u0db4\u0dd2 \u0dc3\u0dca\u0dae\u0dbb \u0daf\u0dbb\u0dca\u0dc1\u0d9a \u0db1\u0dd2\u0dba\u0ddd\u0d9a\u0dca\u0dc3\u0dca \u0dbd\u0dd9\u0dc3 \u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf \u0d9a\u0dbb\u0db1 \u0d85\u0dad\u0dbb \u0d85\u0db4\u0d9c\u0dda \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dad\u0dca\u0db8\u0d9a \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dda\u0daf\u0dd3 \u0d85\u0db4\u0da7 \u0d85\u0dc0\u0dc1\u0dca\u0dba \u0db1\u0ddc\u0dc0\u0db1 \u0db4\u0dbb\u0dd2\u0dc0\u0dbb\u0dca\u0dad\u0db1 \u0dc3\u0dca\u0dae\u0dbb \u0daf\u0dd9\u0d9a\u0d9a\u0dca \u0dad\u0dd2\u0db6\u0dda.
\n_^_0_^_
\n": "_^_0_^_
\n", "Copying cached layers is faster than initializing new layers because it takes time to initialize parameters.
\nReturns the created layer or a copy of the cached layer
\u0db4\u0dbb\u0dcf\u0db8\u0dd2\u0dad\u0dd3\u0db1\u0dca\u0d86\u0dbb\u0db8\u0dca\u0db7 \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0da7 \u0d9a\u0dcf\u0dbd\u0dba \u0d9c\u0dad\u0dc0\u0db1 \u0db1\u0dd2\u0dc3\u0dcf \u0dc4\u0dd0\u0db9\u0dd2\u0dbd\u0dd2 \u0dc3\u0dca\u0dae\u0dbb \u0db4\u0dd2\u0da7\u0db4\u0dad\u0dca \u0d9a\u0dd2\u0dbb\u0dd3\u0db8 \u0db1\u0dc0 \u0dc3\u0dca\u0dae\u0dbb \u0d86\u0dbb\u0db8\u0dca\u0db7 \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0da7 \u0dc0\u0da9\u0dcf \u0dc0\u0dda\u0d9c\u0dc0\u0dad\u0dca \u0dc0\u0dda.
\n\u0dc3\u0dcf\u0daf\u0db1\u0dbd\u0daf \u0dc3\u0dca\u0dad\u0dbb\u0dba \u0dc4\u0ddd \u0d9a\u0dd0\u0da0\u0dca \u0dc3\u0dca\u0dae\u0dbb\u0dba\u0dda \u0db4\u0dd2\u0da7\u0db4\u0dad\u0d9a\u0dca\u0d86\u0db4\u0dc3\u0dd4 \u0dbd\u0db6\u0dcf \u0daf\u0dd9\u0dba\u0dd2
We move the layer to the device and convert it to the correct data type
\nReturns the prepared layer
\u0d85\u0db4\u0dd2\u0dc3\u0dca\u0dad\u0dbb\u0dba \u0d8b\u0db4\u0dcf\u0d82\u0d9c\u0dba \u0dc0\u0dd9\u0dad \u0d9c\u0dd9\u0db1 \u0d9c\u0ddc\u0dc3\u0dca \u0db1\u0dd2\u0dc0\u0dd0\u0dbb\u0daf\u0dd2 \u0daf\u0dad\u0dca\u0dad \u0dc0\u0dbb\u0dca\u0d9c\u0dba\u0da7 \u0db4\u0dbb\u0dd2\u0dc0\u0dbb\u0dca\u0dad\u0db1\u0dba \u0d9a\u0dbb\u0db8\u0dd4
\n\u0dc3\u0d9a\u0dc3\u0dca\u0d9a\u0dc5 \u0dc3\u0dca\u0dad\u0dbb\u0dba\u0d86\u0db4\u0dc3\u0dd4 \u0dbd\u0db6\u0dcf \u0daf\u0dd9\u0dba\u0dd2
\n": "
\n", "\n
This function implements layer transformations after loading the checkpoint.
\nCurrently, it only applies the int8 quantization.
\nReturns the prepared layer
\u0db8\u0dd9\u0db8\u0dc1\u0dca\u0dbb\u0dd2\u0dad\u0dba \u0db4\u0dd2\u0dbb\u0dd2\u0d9a\u0dca\u0dc3\u0dd4\u0db8\u0dca \u0dc3\u0dca\u0dae\u0dcf\u0db1\u0dba \u0db4\u0dd0\u0da7\u0dc0\u0dd3\u0db8\u0dd9\u0db1\u0dca \u0db4\u0dc3\u0dd4 \u0dc3\u0dca\u0dae\u0dbb \u0db4\u0dbb\u0dd2\u0dc0\u0dbb\u0dca\u0dad\u0db1\u0dba\u0db1\u0dca \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dad\u0dca\u0db8\u0d9a \u0d9a\u0dbb\u0dba\u0dd2.
\n\u0daf\u0dd0\u0db1\u0da7\u0d91\u0dba \u0d85\u0daf\u0dcf\u0dc5 \u0dc0\u0db1\u0dca\u0db1\u0dda INT8 \u0db4\u0dca\u0dbb\u0db8\u0dcf\u0dab\u0d9a\u0dbb\u0dab\u0dba \u0db4\u0db8\u0dab\u0dd2.
\n\u0dc3\u0d9a\u0dc3\u0dca\u0d9a\u0dc5 \u0dc3\u0dca\u0dad\u0dbb\u0dba\u0d86\u0db4\u0dc3\u0dd4 \u0dbd\u0db6\u0dcf \u0daf\u0dd9\u0dba\u0dd2
_^_0_^_
\n": "_^_0_^_
\n", "Code to load the checkpoint
\n": "\u0db8\u0dd4\u0dbb\u0db4\u0ddc\u0dbd\u0db4\u0dd6\u0dbb\u0dab\u0dba \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0da7 \u0d9a\u0dda\u0dad\u0dba
\n", "Readout layer
\n": "\u0d9a\u0dd2\u0dba\u0dc0\u0dd3\u0db8\u0dda\u0dc3\u0dca\u0dae\u0dbb\u0dba
\n", "\n": "\u0dc6\u0dca\u0dbd\u0dd1\u0dc2\u0dca \u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba
\n", "_^_0_^_
\n": "_^_0_^_
\n", "Add RoPE embeddings
\n": "\u0d9a\u0db9\u0dba\u0d9a\u0dcf\u0dc0\u0dd0\u0daf\u0dca\u0daf\u0dd3\u0db8\u0dca \u0d91\u0d9a\u0dad\u0dd4 \u0d9a\u0dbb\u0db1\u0dca\u0db1
\n", "Add head dimension
\n": "\u0dc4\u0dd2\u0dc3\u0db8\u0dcf\u0db1\u0dba\u0d9a\u0dca \u0d91\u0d9a\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1
\n", "Add them and the residual connection
\n": "\u0d92\u0dc0\u0dcf\u0dc3\u0dc4 \u0d85\u0dc0\u0dc1\u0dda\u0dc2 \u0dc3\u0db8\u0dca\u0db6\u0db1\u0dca\u0db0\u0dad\u0dcf\u0dc0\u0dba \u0d91\u0d9a\u0dad\u0dd4 \u0d9a\u0dbb\u0db1\u0dca\u0db1
\n", "Apply mask
\n": "\u0dc0\u0dd9\u0dc3\u0dca\u0dba\u0ddc\u0daf\u0db1\u0dca\u0db1
\n", "Attention layer
\n": "\u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba\u0dc3\u0dca\u0dae\u0dbb\u0dba
\n", "Attention output transform
\n": "\u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba\u0dba\u0ddc\u0db8\u0dd4 \u0db4\u0dca\u0dbb\u0dad\u0dd2\u0daf\u0dcf\u0db1\u0dba \u0db4\u0dbb\u0dd2\u0dab\u0dcf\u0db8\u0db1\u0dba
\n", "Attention query, key and value transform
\n": "\u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba\u0dc0\u0dd2\u0db8\u0dc3\u0dd4\u0db8, \u0dba\u0dad\u0dd4\u0dbb \u0dc3\u0dc4 \u0d85\u0d9c\u0dba \u0db4\u0dbb\u0dd2\u0dc0\u0dbb\u0dca\u0dad\u0db1\u0dba \u0d9a\u0dd2\u0dbb\u0dd3\u0db8
\n", "Attention scaling factor
\n": "\u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba\u0db4\u0dbb\u0dd2\u0db8\u0dcf\u0dab \u0dc3\u0dcf\u0db0\u0d9a\u0dba
\n", "Attention softmax
\n": "\u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba\u0dc3\u0ddc\u0dc6\u0dca\u0da7\u0dca\u0db8\u0dd0\u0d9a\u0dca\u0dc3\u0dca
\n", "Attention softmax module
\n": "\u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba\u0dba\u0ddc\u0db8\u0dd4 \u0d9a\u0dbb\u0db1\u0dca\u0db1 \u0dc3\u0ddc\u0dc6\u0dca\u0da7\u0dca\u0db8\u0dd0\u0d9a\u0dca\u0dc3\u0dca \u0db8\u0ddc\u0da9\u0dd2\u0dba\u0dd4\u0dbd\u0dba
\n", "Base for _^_0_^_
\n": "\u0dc3\u0db3\u0dc4\u0dcf\u0db8\u0dd6\u0dbd\u0dd2\u0d9a _^_0_^_
\n", "Cache _^_0_^_ and _^_1_^_
\n": "\u0dc4\u0dd0\u0db9\u0dd2\u0dbd\u0dd2\u0dba _^_0_^_ \u0dc3\u0dc4 _^_1_^_
\n", "Cache them
\n": "\u0d92\u0dc0\u0dcf\u0dc4\u0dd0\u0db9\u0dd2\u0dbd\u0dd2\u0dba
\n", "Calculate _^_0_^_ and _^_1_^_ in fp32
\n": "\u0d9c\u0dab\u0db1\u0dba\u0d9a\u0dbb\u0db1\u0dca\u0db1 _^_0_^_ \u0dc3\u0dc4 _^_1_^_ fp32
\n", "Concatenate so that for row _^_0_^_ we have
\n_^_1_^_
\n": "\u0db4\u0dda\u0dc5\u0dd2\u0dba\u0dc3\u0db3\u0dc4\u0dcf _^_0_^_ \u0d85\u0db4\u0da7 \u0d87\u0dad\u0dd2 \u0db4\u0dbb\u0dd2\u0daf\u0dd2 \u0dc3\u0d82\u0dba\u0dd4\u0d9a\u0dca\u0dad \u0d9a\u0dbb\u0db1\u0dca\u0db1
\n_^_1_^_
\n", "Concatenate the past
\n": "\u0d85\u0dad\u0dd3\u0dad\u0dba\u0dc3\u0d82\u0dba\u0dd4\u0d9a\u0dca\u0dad \u0d9a\u0dbb\u0db1\u0dca\u0db1
\n", "Concatenate with features that didn't get RoPE embeddings
\n": "\u0d9a\u0db9\u0dba\u0d9a\u0dcf\u0dc0\u0dd0\u0daf\u0dca\u0daf\u0dd3\u0db8\u0dca \u0dbd\u0db6\u0dcf \u0db1\u0ddc\u0d9c\u0dad\u0dca \u0dc0\u0dd2\u0dc1\u0dda\u0dc2\u0dcf\u0d82\u0d9c \u0dc3\u0db8\u0d9f \u0dc3\u0d82\u0dba\u0dd4\u0d9a\u0dca\u0dad \u0dc0\u0db1\u0dca\u0db1
\n", "Contraction linear layer
\n": "\u0dc3\u0d82\u0d9a\u0ddd\u0da0\u0db1\u0dba\u0dbb\u0dda\u0d9b\u0dd3\u0dba \u0dc3\u0dca\u0dae\u0dbb\u0dba
\n", "Convert the linear layers
\n": "\u0dbb\u0dda\u0d9b\u0dd3\u0dba\u0dc3\u0dca\u0dae\u0dbb \u0db4\u0dbb\u0dd2\u0dc0\u0dbb\u0dca\u0dad\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1
\n", "Convert to fp32 if the current dtype is fp16
\n": "\u0dc0\u0dad\u0dca\u0db8\u0db1\u0dcadtype fp16 \u0db1\u0db8\u0dca fp32 \u0db6\u0dc0\u0da7 \u0db4\u0dbb\u0dd2\u0dc0\u0dbb\u0dca\u0dad\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1
\n", "Create mask
\n": "\u0dc0\u0dd9\u0dc3\u0dca\u0db8\u0dd4\u0dc4\u0dd4\u0dab \u0dc3\u0dcf\u0daf\u0db1\u0dca\u0db1
\n", "Disable auto-casting to fp16 for attention computation
\n": "\u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba\u0d9c\u0dab\u0db1\u0dba \u0d9a\u0dd2\u0dbb\u0dd3\u0db8 \u0dc3\u0db3\u0dc4\u0dcf fp16 \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0da7 \u0dc3\u0dca\u0dc0\u0dba\u0d82\u0d9a\u0dca\u0dbb\u0dd3\u0dba-\u0dc0\u0dcf\u0dad\u0dca\u0dad\u0dd4 \u0d85\u0d9a\u0dca\u0dbb\u0dd3\u0dba
\n", "Do not cast for bfloat
\n": "bfloat\u0dc3\u0db3\u0dc4\u0dcf \u0dc0\u0dcf\u0dad\u0dca\u0dad\u0dd4 \u0db1\u0ddc\u0d9a\u0dbb\u0db1\u0dca\u0db1
\n", "Embedding layer
\n": "\u0d9a\u0dcf\u0dc0\u0dd0\u0daf\u0dca\u0daf\u0dd3\u0db8\u0dc3\u0dca\u0dae\u0dbb\u0dba
\n", "Expansion linear layer
\n": "\u0db4\u0dd4\u0dc5\u0dd4\u0dbd\u0dca\u0dbb\u0dda\u0d9b\u0dd3\u0dba \u0dc3\u0dca\u0dae\u0dbb\u0dba
\n", "FFN first transform
\n": "FFN\u0db4\u0dc5\u0db8\u0dd4 \u0db4\u0dbb\u0dd2\u0dc0\u0dbb\u0dca\u0dad\u0db1\u0dba
\n", "FFN layer
\n": "FFN\u0dc3\u0dca\u0dae\u0dbb\u0dba
\n", "FFN second transform
\n": "FFN\u0daf\u0dd9\u0dc0\u0db1 \u0db4\u0dbb\u0dd2\u0dab\u0dcf\u0db8\u0db1\u0dba
\n", "Final linear layer
\n": "\u0d85\u0dc0\u0dc3\u0dcf\u0db1\u0dbb\u0dda\u0d9b\u0dd3\u0dba \u0dc3\u0dca\u0dae\u0dbb\u0dba
\n", "Final normalization layer
\n": "\u0d85\u0dc0\u0dc3\u0dcf\u0db1\u0dc3\u0dcf\u0db8\u0dcf\u0db1\u0dca\u0dba\u0d9a\u0dbb\u0dab \u0dc3\u0dca\u0dad\u0dbb\u0dba
\n", "GELU activation
\n": "GELU\u0dc3\u0d9a\u0dca\u0dbb\u0dd2\u0dba \u0d9a\u0dd2\u0dbb\u0dd3\u0db8
\n", "Get attention weighted values
\n": "\u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba\u0db6\u0dbb \u0dad\u0dd0\u0db6\u0dd6 \u0d85\u0d9c\u0dba\u0db1\u0dca \u0dbd\u0db6\u0dcf \u0d9c\u0db1\u0dca\u0db1
\n", "Get causal mask
\n": "\u0dc4\u0dda\u0dad\u0dd4\u0dc0\u0dd9\u0dc3\u0dca\u0db8\u0dd4\u0dc4\u0dd4\u0dab \u0dbd\u0db6\u0dcf \u0d9c\u0db1\u0dca\u0db1
\n", "Get default values if not specified
\n": "\u0db1\u0dd2\u0dba\u0db8\u0d9a\u0dbb \u0db1\u0ddc\u0db8\u0dd0\u0dad\u0dd2 \u0db1\u0db8\u0dca \u0db4\u0dd9\u0dbb\u0db1\u0dd2\u0db8\u0dd2 \u0d85\u0d9c\u0dba\u0db1\u0dca \u0dbd\u0db6\u0dcf \u0d9c\u0db1\u0dca\u0db1
\n", "Get position indexes _^_0_^_
\n": "\u0dc3\u0dca\u0dae\u0dcf\u0db1\u0daf\u0dbb\u0dca\u0dc1\u0d9a \u0dbd\u0db6\u0dcf \u0d9c\u0db1\u0dca\u0db1 _^_0_^_
\n", "Get query, key and value embeddings (all concatenated). The last dimension size will change from n_hidden -> _^_0_^_
\n": "\u0dc0\u0dd2\u0db8\u0dc3\u0dd4\u0db8, \u0dba\u0dad\u0dd4\u0dbb \u0dc3\u0dc4 \u0dc0\u0da7\u0dd2\u0db1\u0dcf\u0d9a\u0db8\u0dca \u0d9a\u0dcf\u0dc0\u0dd0\u0daf\u0dca\u0daf\u0dd3\u0db8\u0dca \u0dbd\u0db6\u0dcf \u0d9c\u0db1\u0dca\u0db1 (\u0dc3\u0dd2\u0dba\u0dbd\u0dca\u0dbd \u0dc3\u0d82\u0dba\u0dd4\u0d9a\u0dca\u0dad \u0d9a\u0dbb \u0d87\u0dad). \u0db4\u0dc3\u0dd4\u0d9c\u0dd2\u0dba \u0db8\u0dcf\u0db1\u0dba\u0d9a\u0dca \u0db4\u0dca\u0dbb\u0db8\u0dcf\u0dab\u0dba n_hidden -> \u0dc3\u0dd2\u0da7 \u0dc0\u0dd9\u0db1\u0dc3\u0dca \u0dc0\u0db1\u0dd4 \u0d87\u0dad _^_0_^_
\n", "Get the actual sequence length
\n": "\u0dc3\u0dad\u0dca\u0dba\u0d85\u0db1\u0dd4\u0d9a\u0dca\u0dbb\u0db8\u0dba\u0dda \u0daf\u0dd2\u0d9c \u0dbd\u0db6\u0dcf \u0d9c\u0db1\u0dca\u0db1
\n", "Get the past keys and values. These will have shape _^_0_^_
\n": "\u0d85\u0dad\u0dd3\u0dad\u0dba\u0dad\u0dd4\u0dbb\u0dd4 \u0dc3\u0dc4 \u0d85\u0d9c\u0dba\u0db1\u0dca \u0dbd\u0db6\u0dcf \u0d9c\u0db1\u0dca\u0db1. \u0db8\u0dda\u0dc0\u0dcf\u0da7 \u0dc4\u0dd0\u0da9\u0dba \u0d87\u0dad _^_0_^_
\n", "Get the sin and cos values from the cache
\n": "\u0dc4\u0dd0\u0db9\u0dd2\u0dbd\u0dd2\u0dba\u0dc3\u0dd2\u0da7 \u0db4\u0dcf\u0db4\u0dba \u0dc3\u0dc4 \u0d9a\u0ddd\u0dc3\u0dca \u0d85\u0d9c\u0dba\u0db1\u0dca \u0dbd\u0db6\u0dcf \u0d9c\u0db1\u0dca\u0db1
\n", "Get the state id's. We use to retrieve previous states and store the next states
\n": "\u0dbb\u0dcf\u0da2\u0dca\u0dbaid \u0d9c\u0dda \u0dbd\u0db6\u0dcf \u0d9c\u0db1\u0dca\u0db1. \u0d85\u0db4\u0dd2 \u0db4\u0dd9\u0dbb \u0dbb\u0dcf\u0da2\u0dca\u0dba\u0dba\u0db1\u0dca \u0dbd\u0db6\u0dcf \u0d9c\u0dd0\u0db1\u0dd3\u0db8\u0da7 \u0dc4\u0dcf \u0d89\u0daf\u0dd2\u0dbb\u0dd2 \u0dbb\u0dcf\u0da2\u0dca\u0dba\u0dba\u0db1\u0dca \u0d9c\u0db6\u0da9\u0dcf \u0d9a\u0dd2\u0dbb\u0dd3\u0db8 \u0dc3\u0db3\u0dc4\u0dcf \u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf
\n", "If there's cache
\n": "\u0dc4\u0dd0\u0db9\u0dd2\u0dbd\u0dd2\u0dba\u0dad\u0dd2\u0db6\u0dda \u0db1\u0db8\u0dca
\n", "If we are caching the states of previous tokens
\n": "\u0d85\u0db4\u0dd2\u0db4\u0dd9\u0dbb \u0da7\u0ddd\u0d9a\u0db1 \u0dc0\u0dbd \u0dad\u0dad\u0dca\u0dc0\u0dba\u0db1\u0dca \u0dc4\u0dd0\u0db9\u0dd2\u0dbd\u0dd2 \u0d9a\u0dbb\u0db1\u0dca\u0db1\u0dda \u0db1\u0db8\u0dca
\n", "Initialize _^_0_^_
\n": "\u0d86\u0dbb\u0db8\u0dca\u0db7\u0d9a\u0dbb\u0db1\u0dca\u0db1 _^_0_^_
\n", "Initialize _^_0_^_ and _^_1_^_ cache
\n": "\u0d86\u0dbb\u0db8\u0dca\u0db7\u0d9a\u0dbb\u0db1\u0dca\u0db1 _^_0_^_ \u0dc3\u0dc4 _^_1_^_ \u0dc4\u0dd0\u0db9\u0dd2\u0dbd\u0dd2\u0dba
\n", "Layer norm before FFN
\n": "FFN\u0da7 \u0db4\u0dd9\u0dbb \u0dc3\u0dca\u0dae\u0dbb \u0dc3\u0db8\u0dca\u0db8\u0dad\u0dba
\n", "Layer norm before attention
\n": "\u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba\u0da7\u0db4\u0dd9\u0dbb \u0dc3\u0dca\u0dae\u0dbb \u0dc3\u0db8\u0dca\u0db8\u0dad\u0dba
\n", "Layer normalization before FFN
\n": "FFN\u0da7 \u0db4\u0dd9\u0dbb \u0dc3\u0dca\u0dae\u0dbb \u0dc3\u0dcf\u0db8\u0dcf\u0db1\u0dca\u0dba\u0d9a\u0dbb\u0dab\u0dba
\n", "Layer normalization before attention
\n": "\u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba\u0da7\u0db4\u0dd9\u0dbb \u0dc3\u0dca\u0dae\u0dbb \u0dc3\u0dcf\u0db8\u0dcf\u0db1\u0dca\u0dba\u0d9a\u0dbb\u0dab\u0dba
\n", "Linear layer for query, key and value
\n": "\u0dc0\u0dd2\u0db8\u0dc3\u0dd4\u0db8, \u0dba\u0dad\u0dd4\u0dbb \u0dc3\u0dc4 \u0dc0\u0da7\u0dd2\u0db1\u0dcf\u0d9a\u0db8 \u0dc3\u0db3\u0dc4\u0dcf \u0dbb\u0dda\u0d9b\u0dd3\u0dba \u0dc3\u0dca\u0dae\u0dbb\u0dba
\n", "NeoX runs attention and feedforward network in parallel
\n": "\u0db1\u0dd2\u0dba\u0ddd\u0d9a\u0dca\u0dc3\u0dca\u0dc3\u0db8\u0dcf\u0db1\u0dca\u0dad\u0dbb\u0dc0 \u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba \u0dc3\u0dc4 \u0db4\u0dca\u0dbb\u0dad\u0dd2\u0db4\u0ddd\u0dc2\u0dab \u0da2\u0dcf\u0dbd\u0dba \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dad\u0dca\u0db8\u0d9a \u0d9a\u0dbb\u0dba\u0dd2
\n", "No cache - simply add RoPE embeddings
\n": "\u0dc4\u0dd0\u0db9\u0dd2\u0dbd\u0dd2\u0dba\u0d9a\u0dca\u0db1\u0dd0\u0dad - \u0d9a\u0db9\u0dba \u0d9a\u0dcf\u0dc0\u0dd0\u0daf\u0dca\u0daf\u0dd3\u0db8\u0dca \u0d91\u0d9a\u0dad\u0dd4 \u0d9a\u0dbb\u0db1\u0dca\u0db1
\n", "Number of features for RoPE
\n": "\u0d9a\u0db9\u0dba\u0dc3\u0db3\u0dc4\u0dcf \u0dc0\u0dd2\u0dc1\u0dda\u0dc2\u0dcf\u0d82\u0d9c \u0d9c\u0dab\u0db1
\n", "Number of features per head
\n": "\u0dc4\u0dd2\u0dc3\u0d9a\u0da7\u0dc0\u0dd2\u0dc1\u0dda\u0dc2\u0dcf\u0d82\u0d9c \u0d9c\u0dab\u0db1
\n", "Offset of the current embeddings
\n": "\u0dc0\u0dad\u0dca\u0db8\u0db1\u0dca\u0d9a\u0dcf\u0dc0\u0dd0\u0daf\u0dca\u0daf\u0dd3\u0db8\u0dca \u0dc0\u0dbd \u0d95\u0dc6\u0dca\u0dc3\u0dd9\u0da7\u0dca
\n", "Only convert the linear layers in the transformer layers
\n": "\u0da7\u0dca\u0dbb\u0dcf\u0db1\u0dca\u0dc3\u0dca\u0dc6\u0ddd\u0db8\u0dbb\u0dca\u0dc3\u0dca\u0dae\u0dbb \u0dc0\u0dbd \u0dbb\u0dda\u0d9b\u0dd3\u0dba \u0dc3\u0dca\u0dae\u0dbb \u0db4\u0db8\u0dab\u0d9a\u0dca \u0db4\u0dbb\u0dd2\u0dc0\u0dbb\u0dca\u0dad\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1
\n", "Otherwise, use normal attention
\n": "\u0d91\u0dc3\u0dda \u0db1\u0ddc\u0db8\u0dd0\u0dad\u0dd2 \u0db1\u0db8\u0dca, \u0dc3\u0dcf\u0db8\u0dcf\u0db1\u0dca\u0dba \u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba \u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf \u0d9a\u0dbb\u0db1\u0dca\u0db1
\n", "Query and key lengths
\n": "\u0dc0\u0dd2\u0db8\u0dc3\u0dd4\u0db8\u0dc3\u0dc4 \u0dba\u0dad\u0dd4\u0dbb\u0dd4 \u0daf\u0dd2\u0d9c
\n", "Readout layer
\n": "\u0d9a\u0dd2\u0dba\u0dc0\u0dd3\u0db8\u0dda\u0dc3\u0dca\u0dae\u0dbb\u0dba
\n", "Reshape from _^_0_^_batch_size, seq_len, n_hidden`
\n": "_^_0_^_Batch_size, seq_len, n_hidden`\u0dc0\u0dd9\u0dad\u0dd2\u0db1\u0dca \u0db1\u0dd0\u0dc0\u0dad \u0dc3\u0d9a\u0dc3\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1
\n", "Residual connection
\n": "\u0d85\u0dc0\u0dc1\u0dda\u0dc2\u0dc3\u0db8\u0dca\u0db6\u0db1\u0dca\u0db0\u0dad\u0dcf\u0dc0\u0dba
\n", "Return from cache
\n": "\u0dc4\u0dd0\u0db9\u0dd2\u0dbd\u0dd2\u0dba\u0dc3\u0dd2\u0da7 \u0d86\u0db4\u0dc3\u0dd4
\n", "RoPE embedding module
\n": "\u0d9a\u0db9\u0dba\u0d9a\u0dcf\u0dc0\u0dd0\u0daf\u0dca\u0daf\u0dd3\u0db8 \u0db8\u0ddc\u0da9\u0dd2\u0dba\u0dd4\u0dbd\u0dba
\n", "RoPE embeddings
\n_^_0_^_for _^_1_^_
\n": "\u0d9a\u0db9\u0dba\u0d9a\u0dcf\u0dc0\u0dd0\u0daf\u0dca\u0daf\u0dd3\u0db8\u0dca
\n_^_0_^_\u0dc3\u0db3\u0dc4\u0dcf _^_1_^_
\n", "Save the current state
\n": "\u0dc0\u0dad\u0dca\u0db8\u0db1\u0dca\u0dad\u0dad\u0dca\u0dc0\u0dba \u0dc3\u0dd4\u0dbb\u0d9a\u0dd2\u0db1\u0dca\u0db1
\n", "Scale attention
\n": "\u0db4\u0dbb\u0dd2\u0db8\u0dcf\u0dab\u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba
\n", "Skip if not using int8 quantization
\n": "INT8\u0db4\u0dca\u0dbb\u0db8\u0dcf\u0dab\u0d9a\u0dbb\u0dab\u0dba \u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf \u0db1\u0ddc\u0d9a\u0dbb\u0db1\u0dca\u0db1\u0dda \u0db1\u0db8\u0dca \u0db8\u0d9f \u0dc4\u0dbb\u0dd2\u0db1\u0dca\u0db1
\n", "Split into heads by changing the shape to _^_0_^_
\n": "\u0dc4\u0dd0\u0da9\u0dba\u0dc0\u0dd9\u0db1\u0dc3\u0dca \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dd9\u0db1\u0dca \u0dc4\u0dd2\u0dc3\u0dca \u0dc0\u0dbd\u0da7 \u0db6\u0dd9\u0daf\u0db1\u0dca\u0db1 _^_0_^_
\n", "Split into query, key and value each of shape _^_0_^_
\n": "\u0dc0\u0dd2\u0db8\u0dc3\u0dd4\u0db8\u0da7\u0db6\u0dd9\u0daf\u0db1\u0dca\u0db1, \u0dba\u0dad\u0dd4\u0dbb \u0dc3\u0dc4 \u0dc4\u0dd0\u0da9\u0dba \u0d91\u0d9a\u0dca \u0d91\u0d9a\u0dca \u0d85\u0d9c\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1 _^_0_^_
\n", "Split the features. We apply RoPE to only _^_0_^_ features
\n": "\u0dc0\u0dd2\u0dc1\u0dda\u0dc2\u0dcf\u0d82\u0d9c\u0db6\u0dd9\u0daf\u0db1\u0dca\u0db1. _^_0_^_ \u0dc0\u0dd2\u0dc1\u0dda\u0dc2\u0dcf\u0d82\u0d9c \u0dc3\u0db3\u0dc4\u0dcf \u0db4\u0db8\u0dab\u0d9a\u0dca \u0d85\u0db4\u0dd2 \u0d9a\u0db9\u0dba \u0dba\u0ddc\u0daf\u0db1\u0dca\u0db1\u0dd9\u0db8\u0dd4
\n", "Stack them into shape _^_0_^_
\n": "\u0d92\u0dc0\u0dcf \u0dc4\u0dd0\u0da9\u0dba\u0da7 \u0d9c\u0ddc\u0da9\u0d9c\u0dc3\u0db1\u0dca\u0db1_^_0_^_
\n", "The output is of shape _^_0_^_
\n": "\u0db4\u0dca\u0dbb\u0dad\u0dd2\u0daf\u0dcf\u0db1\u0dba \u0dc4\u0dd0\u0da9\u0dba\u0dd9\u0db1\u0dca \u0dba\u0dd4\u0d9a\u0dca\u0dad \u0dc0\u0dda_^_0_^_
\n", "To cache causal mask
\n": "\u0dc4\u0dda\u0dad\u0dd4\u0d86\u0dc0\u0dbb\u0dab \u0dc4\u0dd0\u0db9\u0dd2\u0dbd\u0dd2 \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0da7
\n", "To store _^_0_^_ for the features
\n": "\u0dc0\u0dd2\u0dc1\u0dda\u0dc2\u0dcf\u0d82\u0d9c _^_0_^_ \u0dc3\u0db3\u0dc4\u0dcf \u0d9c\u0db6\u0da9\u0dcf \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0da7
\n", "Transformer layer
\n": "\u0da7\u0dca\u0dbb\u0dcf\u0db1\u0dca\u0dc3\u0dca\u0dc6\u0ddd\u0db8\u0dbb\u0dca\u0dc3\u0dca\u0dae\u0dbb\u0dba
\n", "Transformer layers
\n": "\u0da7\u0dca\u0dbb\u0dcf\u0db1\u0dca\u0dc3\u0dca\u0dc6\u0ddd\u0db8\u0dbb\u0dca\u0dc3\u0dca\u0dae\u0dbb
\n", "Use _^_0_^_ defined in utilities.
\n": "\u0d8b\u0db4\u0dba\u0ddd\u0d9c\u0dd2\u0dad\u0dcf\u0dc0\u0dbd _^_0_^_ \u0d85\u0dbb\u0dca\u0dae \u0daf\u0d9a\u0dca\u0dc0\u0dcf \u0d87\u0dad\u0dd2 \u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf \u0d9a\u0dbb\u0db1\u0dca\u0db1.
\n", "Use flash attention
\n": "\u0dc6\u0dca\u0dbd\u0dd1\u0dc2\u0dca \u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba \u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf \u0d9a\u0dbb\u0db1\u0dca\u0db1
\n", "Out implementation doesn't include dropout.
\n": "\u0db4\u0dd2\u0da7\u0dad \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dad\u0dca\u0db8\u0d9a \u0d9a\u0dd2\u0dbb\u0dd3\u0db8 \u0d85\u0dad\u0dc4\u0dd0\u0dbb \u0daf\u0dd0\u0db8\u0dd3\u0db8 \u0d87\u0dad\u0dd4\u0dc5\u0dad\u0dca \u0db1\u0ddc\u0dc0\u0dda.
\n", "