{
  "source_file": "0930",
  "source_platform": "Substack",
  "author": "Exploring Language Models Maarten Grootendorst",
  "title_listed": "A Visual Guide to Quantization",
  "keywords": "量化,LLM,压缩",
  "domain": "大模型算法",
  "content_type": "深度技术解析",
  "is_paid_flag": "否",
  "url": "https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-quantization",
  "publish_date": "2024-07",
  "corpus_stage": "推理部署",
  "notes": "量化可视化指南",
  "id": "5f7a2ad09c52",
  "collected_at": "2026-10-01T20:46:39",
  "title": "A Visual Guide to Quantization - by Maarten Grootendorst",
  "body_markdown": "Translations\n-\nKorean\n-\nChinese\n-\nFrench\nAs their name suggests, Large Language Models (LLMs) are often too large to run on consumer hardware. These models may exceed billions of parameters and generally need GPUs with large amounts of VRAM to speed up inference.\nAs such, more and more research has been focused on making these models smaller through improved training, adapters, etc. One major technique in this field is called\nquantization\n.\nIn this post, I will introduce the field of quantization in the context of language modeling and explore concepts one by one to develop an intuition about the field. We will explore various methodologies, use cases, and the principles behind quantization.\nIn this visual guide, there are more than\n50 custom visuals\nto help you develop an intuition about quantization!\nThanks for reading\nExploring Language Models\n! Subscribe to receive new posts on\nGen AI\nand the book:\nHands-On Large Language Models\nSubscribe\nTo see more visualizations related to LLMs and to support this newsletter, check out the book I wrote on Large Language Models!\nOfficial website\nof the book. You can order the book on\nAmazon\n. All code is uploaded to\nGitHub\n.\nP.S. If you read the book, a\nquick review\nwould mean the world—it really helps us authors!\nPart 1:\nThe “Problem“ with LLMs\nLLMs get their name due to the number of parameters they contain. Nowadays, these models typically have billions of parameters (mostly\nweights\n) which can be quite expensive to store.\nDuring inference, activations are created as a product of the input and the weights, which similarly can be quite large.\nAs a result, we would like to represent billions of values as efficiently as possible, minimizing the amount of space we need to store a given value.\nLet’s start from the beginning and explore how numerical values are represented in the first place before optimizing them.\nHow to Represent Numerical Values\nA given value is often represented as a floating point number (or\nfloats\nin computer science): a positive or negative number with a decimal point.\nThese values are represented by “\nbits\n”, or binary digits. The\nIEEE-754\nstandard describes how bits can represent one of three functions to represent the value: the\nsign\n,\nexponent\n, or\nfraction (\nor mantissa\n)\n.\nTogether, these three aspects can be used to calculate a value given a certain set of bit values:\nThe more bits we use to represent a value, the more precise it generally is:\nMemory Constraints\nThe more bits we have available, the larger the range of values that can be represented.\nThe interval of representable numbers a given representation can take is called the\ndynamic range\nwhereas the distance between two neighboring values is called\nprecision\n.\nA nifty feature of these bits is that we can calculate how much memory your device needs to store a given value. Since there are 8 bits in a byte of memory, we can create a basic formula for most forms of floating point representation.\nNOTE\n: In practice, more things relate to the amount of (V)RAM you need during inference, like the context size and architecture.\nNow let’s assume that we have a model with 70 billion parameters. Most models are natively represented with float 32-bit (often called\nfull-precision\n), which would require\n280GB\nof memory just to load the model.\nAs such, it is very compelling to minimize the number of bits to represent the parameters of your model (as well as during training!). However, as the precision decreases the accuracy of the models generally does as well.\nWe want to reduce the number of bits representing values while maintaining accuracy… This is where\nquantization\ncomes in!\nPart 2:\nIntroduction to Quantization\nQuantization aims to reduce the precision of a model’s parameter from higher bit-widths (like 32-bit floating point) to lower bit-widths (like 8-bit integers).\nThere is often some loss of precision (granularity) when reducing the number of bits to represent the original parameters.\nTo illustrate this effect, we can take any image and use only 8 colors to represent it:\nImage adapted from the original by\nSlava Sidorov\n.\nNotice how the zoomed-in part seems more “grainy” than the original since we can use fewer colors to represent it.\nThe main goal of quantization is to reduce the number of bits (colors) needed to represent the original parameters while preserving the precision of the original parameters as best as possible.\nCommon Data Types\nFirst, let’s look at common data types and the impact of using them rather than 32-bit (called\nfull-precision\nor\nFP32\n) representations.\nFP16\nLet’s look at an example of going from 32-bit to 16-bit (called\nhalf precision\nor\nFP16\n) floating point:\nNotice how the range of values FP16 can take is quite a bit smaller than FP32.\nBF16\nTo get a similar range of values as the original FP32,\nbfloat 16\nwas introduced as a type of “truncated FP32”:\nBF16 uses the same amount of bits as FP16 but can take a wider range of values and is often used in deep learning applications.\nINT8\nWhen we reduce the number of bits even further, we approach the realm of\ninteger-based representations\nrather than floating-point representations. To illustrate, going FP32 to INT8, which has only 8 bits, results in a fourth of the original number of bits:\nDepending on the hardware, integer-based calculations might be faster than floating-point calculations but this isn’t always the case. However, computations are generally faster when using fewer bits.\nFor each reduction in bits, a mapping is performed to “squeeze” the initial FP32 representations into lower bits.\nIn practice, we do not need to map the entire FP32 range [-3.4e38, 3.4e38] into INT8. We merely need to find a way to map the range of our data (the model’s parameters) into INT8.\nCommon squeezing/mapping methods are\nsymmetric\nand\nasymmetric\nquantization and are forms of\nlinear mapping\n.\nLet’s explore these methods to quantize from FP32 to INT8.\nSymmetric Quantization\nIn symmetric quantization, the range of the original floating-point values is mapped to a symmetric range around zero in the quantized space. In the previous examples, notice how the ranges before and after quantization remain centered around zero.\nThis means that the quantized value for zero in the floating-point space is exactly zero in the quantized space.\nA nice example of a form of symmetric quantization is called absolute maximum (\nabsmax\n) quantization.\nGiven a list of values, we take the\nhighest\nabsolute value (\nα\n) as the range to perform the linear mapping.\nNote the [-127, 127] range of values represents the restricted range. The unrestricted range is [-128, 127] and depends on the quantization method.\nSince it is a linear mapping centered around zero, the formula is straightforward.\nWe first calculate a scale factor (\ns\n) using:\nb\nis the number of bytes that we want to quantize to (8),\nα\nis the\nhighest\nabsolute value,\nThen, we use the\ns\nto quantize the input\nx\n:\nFilling in the values would then give us the following:\nTo retrieve the original FP32 values, we can use the previously calculated\nscaling factor\n(\ns\n) to\ndequantize\nthe quantized values.\nApplying the quantization and then dequantization process to retrieve the original looks as follows:\nYou can see certain values, such as\n3.08\nand\n3.02\nbeing assigned to the INT8, namely\n36\n. When you dequantize the values to return to FP32, they lose some precision and are not distinguishable anymore.\nThis is often referred to as the\nquantization error\nwhich we can calculate by finding the difference between the original and dequantized values.\nGenerally, the lower the number of bits, the more quantization error we tend to have.\nAsymmetric Quantization\nAsymmetric quantization, in contrast, is not symmetric around zero. Instead, it maps the minimum (\nβ\n) and maximum (\nα\n) values from the float range to the minimum and maximum values of the quantized range.\nThe method we are going to explore is called\nzero-point quantization\n.\nNotice how the 0 has shifted positions? That’s why it’s called\nasymmetric quantization\n. The min/max values have different distances to 0 in the range [-7.59, 10.8].\nDue to its shifted position, we have to calculate the zero-point for the INT8 range to perform the linear mapping. As before, we also have to calculate a\nscale factor\n(\ns\n) but use the difference of INT8’s range instead [-128, 127]\nNotice how this is a bit more involved due to the need to calculate the\nzeropoint\n(\nz\n) in the INT8 range to shift the weights.\nAs before, let’s fill in the formula:\nTo dequantize the quantized from INT8 back to FP32, we will need to use the previously calculated\nscale factor\n(\ns\n) and\nzeropoint\n(\nz\n).\nOther than that, dequantization is straightforward:\nWhen we put symmetric and asymmetric quantization side-by-side, we can quickly see the difference between methods:\nNote the zero-centered nature of symmetric quantization versus the offset of asymmetric quantization.\nRange Mapping and Clipping\nIn our previous examples, we explored how the range of values in a given vector could be mapped to a lower-bit representation. Although this allows for the full range of vector values to be mapped, it comes with a major downside, namely\noutliers\n.\nImagine that you have a vector with the following values:\nNote how one value is much larger than all others and could be considered an outlier. If we were to map the full range of this vector, all small values would get mapped to the same lower-bit representation and lose their differentiating factor:\nThis is the absmax method we used earlier. Note that the same behavior happens with asymmetric quantization if we do not apply clipping.\nInstead, we can choose to\nclip\ncertain values. Clipping involves setting a different dynamic range of the original values such that all outliers get the same value.\nIn the example below, if we were to manually set the dynamic range to [-5, 5] all values outside that will either be mapped to -127 or to 127 regardless of their value:\nThe major advantage is that the quantization error of the\nnon-outliers\nis reduced significantly. However, the quantization error of\noutliers\nincreases.\nCalibration\nIn the example, I showed a naive method of choosing an arbitrary range of [-5, 5]. The process of selecting this range is known as\ncalibration\nwhich aims to find a range that includes as many values as possible while minimizing the quantization error.\nPerforming this calibration step is not equal for all types of parameters.\nWeights\n(and Biases)\nWe can view the weights and biases of an LLM as\nstatic\nvalues since they are known before running the model. For instance, the\n~20GB file of Llama 3\nconsists mostly of its weight and biases.\nSince there are significantly fewer biases (millions) than weights (billions), the biases are often kept in higher precision (such as INT16), and the main effort of quantization is put towards the weights.\nFor weights, which are static and known, calibration techniques for choosing the range include:\nManually chosing a\npercentile\nof the input range\nOptimize the\nmean squared error\n(MSE) between the original and quantized weights.\nMinimizing\nentropy\n(KL-divergence) between the original and quantized values\nChoosing a percentile, for instance, would lead to similar clipping behavior as we have seen before.\nActivations\nThe input that is continuously updated throughout the LLM is typically referred to as “\nactivations\n”.\nNote that these values are called activations since they often go through some activation function, like sigmoid or relu.\nUnlike weights, activations vary with each input data fed into the model during inference, making it challenging to quantize them accurately.\nSince these values are updated after each hidden layer, we only know what they will be during inference as the input data passes through the model.\nBroadly, there are two methods for calibrating the quantization method of the weights and activations:\nPost-Training Quantization (PTQ)\nQuantization\nafter\ntraining\nQuantization Aware Training (QAT)\nQuantization\nduring\ntraining/fine-tuning\nPart 3:\nPost-Training Quantization\nOne of the most popular quantization techniques is post-training quantization (PTQ). It involves quantizing a model’s parameters (both weights and activations)\nafter\ntraining the model.\nQuantization of the\nweights\nis performed using either symmetric or asymmetric quantization.\nQuantization of the\nactivations\n, however, requires inference of the model to get their potential distribution since we do not know their range.\nThere are two forms of quantization of the activations:\nDynamic\nQuantization\nStatic\nQuantization\nDynamic Quantization\nAfter data passes a hidden layer, its activations are collected:\nThis distribution of activations is then used to calculate the\nzeropoint\n(\nz\n) and\nscale factor\n(\ns\n) values needed to quantize the output:\nThe process is repeated each time data passes through a new layer. Therefore, each layer has its own separate\nz\nand\ns\nvalues and therefore different quantization schemes.\nStatic Quantization\nIn contrast to dynamic quantization, static quantization does not calculate the\nzeropoint\n(\nz\n) and scale factor (\ns\n) during inference but beforehand.\nTo find those values, a\ncalibration dataset\nis used and given to the model to collect these potential distributions.\nAfter these values have been collected, we can calculate the necessary\ns\nand\nz\nvalues to perform quantization during inference.\nWhen you are performing actual inference, the\ns\nand\nz\nvalues are not recalculated but are used globally over all activations to quantize them.\nIn general, dynamic quantization tends to be a bit more accurate since it only attempts to calculate the\ns\nand\nz\nvalues per hidden layer. However, it might increase compute time as these values need to be calculated.\nIn contrast, static quantization is less accurate but is faster as it already knows the\ns\nand\nz\nvalues used for quantization.\nThe Realm of 4-bit Quantization\nGoing below 8-bit quantization has proved to be a difficult task as the quantization error increases with each loss of bit. Fortunately, there are several smart ways to reduce the bits to 6, 4, and even 2-bits (although going lower than 4-bits using these methods is typically not advised).\nWe will explore two methods that are commonly shared on HuggingFace:\nGPTQ\n(full model on GPU)\nGGUF\n(potentially offload layers on the CPU)\nGPTQ\nGPTQ is arguably one of the most well-known methods used in practice for quantization to 4-bits.\n1\nIt uses asymmetric quantization and does so layer by layer such that each layer is processed independently before continuing to the next:\nDuring this layer-wise quantization process, it first converts the layer’s weights into the inverse-\nHessian\n. It is a second-order derivative of the model’s loss function and tells us how sensitive the model's output is to changes in each weight.\nSimplified, it essentially demonstrates the (\ninverse\n)\nimportance of each weight\nin a layer.\nWeights associated with smaller values in the Hessian matrix are more crucial because small changes in these weights can lead to significant changes in the model's performance.\nIn the inverse-Hessian, lower values indicate more “important” weights.\nNext, we quantize and then dequantize the weight of the first row in our weight matrix:\nThis process allows us to calculate the\nquantization error (\nq\n)\nwhich we can weigh using the inverse-Hessian (\nh_1\n)\nthat we calculated beforehand.\nEssentially, we are creating a weighted-quantization error based on the importance of the weight:\nNext, we redistribute this weighted quantization error over the other weights in the row. This allows for maintaining the overall function and output of the network.\nFor example, if we were to do this for the second weight, namely .3 (\nx_2\n), we would add the quantization error (\nq\n) multiplied by the inverse-Hessian of the second weight (\nh\n_2\n)\nWe can do the same process over the third weight in the given row:\nWe iterate over this process of redistributing the weighted quantization error until all values are quantized.\nThis works so well because weights are typically related to one another. So when one weight has a quantization error, related weights are updated accordingly (through the inverse-Hessian).\nNOTE\n:\nThe authors\nused several tricks to speed up computation and improve performance, such as adding a dampening factor to the Hessian, “lazy batching”, and precomputing information using the Cholesky method. I would highly advise checking out\nthis YouTube video\non the subject.\nTIP\n: Check out\nEXL2\nif you want a quantization method aimed at performance optimizations and improving inference speed.\nGGUF\nWhile GPTQ is a great quantization method to run your full LLM on a GPU, you might not always have that capacity. Instead, we can use GGUF to offload any layer of the LLM to the CPU.\n2\nThis allows you to use both the CPU and GPU when you do not have enough VRAM.\nThe quantization method GGUF is updated frequently and might depend on the level of bit quantization. However, the general principle is as follows.\nFirst, the weights of a given layer are split into “super” blocks each containing a set of “sub” blocks. From these blocks, we extract the scale factor (\ns\n) and alpha (\nα\n):\nTo quantize a given “sub” block, we can use the\nabsmax\nquantization we used before. Remember that it multiplies a given weight by the scale factor\n(\ns\n)\n:\nThe scale factor is calculated using the information from the “sub” block but is quantized using the information from the “super” block which has its own scale factor:\nThis block-wise quantization uses the scale factor (\ns_super\n) from the “super” block to quantize the scale factor (\ns_sub\n) from the “sub” block.\nThe quantization level of each scale factor might differ with the “super” block generally having a higher precision than the scale factor of the “sub” block.\nTo illustrate, let’s explore a couple of quantization levels (2-bit, 4-bit, and 6-bit):\nNOTE\n: Depending on the quantization type, an additional minimum value (\nm\n) is needed to adjust the zero-point. These are quantized the same as the scale factor (\ns\n).\nCheck out\nthe original pull request\nfor an overview of all quantization levels. Also, see\nthis pull request\nfor more information on quantization using importance matrices.\nPart 4:\nQuantization Aware Training\nIn Part 3, we saw how we could quantize a model\nafter\ntraining. A downside to this approach is that this quantization does not consider the actual training process.\nThis is where Quantization Aware Training (QAT) comes in. Instead of quantizing a model\nafter\nit was trained with post-training quantization (PTQ), QAT aims to learn the quantization procedure\nduring\ntraining.\nQAT tends to be more accurate than PTQ since the quantization was already considered during training. It works as follows:\nDuring training, so-called “\nfake\n” quants are introduced. This is the process of first quantizing the weights to, for example, INT4 and then dequantizing back to FP32:\nThis process allows the model to consider the quantization process during training, the calculation of loss, and weight updates.\nQAT attempts to explore the loss landscape for “\nwide\n” minima to minimize the quantization errors as “\nnarrow\n” minima tend to result in larger quantization errors.\nFor example, imagine if we did not consider quantization during the backward pass. We choose the weight with the smallest loss according to gradient descent. However, that would introduce a larger quantization error if it’s in a “\nnarrow\n” minima.\nIn contrast, if we consider quantization, a different updated weight will be selected in a “\nwide\n” minima with a much lower quantization error.\nAs such, although PTQ has a lower loss in high precision (e.g., FP32), QAT results in a lower loss in lower precision (e.g., INT4) which is what we aim for.\nThe Era of 1-bit LLMs: BitNet\nGoing to 4-bits as we saw before is already quite small but what if we were to reduce it even further?\nThis is where\nBitNet\ncomes in, representing the weights of a model single 1-bit, using either\n-1\nor\n1\nfor a given weight.\n3\nIt does so by injecting the quantization process directly into the Transformer architecture.\nRemember that the Transformer architecture is used as the foundation of most LLMs and is composed of computations that involve linear layers:\nThese linear layers are generally represented with higher precision, like FP16, and are where most of the weights reside.\nBitNet replaces these linear layers with something they call the\nBitLlinear\n:\nA BitLinear layer works the same as a regular linear layer and calculates the output based on the weights multiplied by the activation.\nIn contrast, a BitLinear layer represents the weights of a model using 1-bit and activations using INT8:\nA BitLinear layer, like Quantization-Aware Training (QAT) performs a form of “fake” quantization during training to analyze the effect of quantization of the weights and activations:\nNOTE\n: In the paper they used\nγ\ninstead of\nα\nbut since we used a throughout our examples, I’m using that. Also, note that\nβ\nis not the same as we used in zero-point quantization but the average absolute value.\nLet’s go through the BitLinear step-by-step.\nWeight Quantization\nWhile training, the weights are stored in INT8 and then quantized to 1-bit using a basic strategy, called the\nsignum function.\nIn essence, it moves the distribution of weights to be centered around 0 and then assigns everything left to 0 to be -1 and everything to the right to be 1:\nAdditionally, it tracks a value\nβ (\naverage\nabsolute value\n)\nthat we will use later on for dequantization.\nActivation Quantization\nTo quantize the activations, BitLinear makes use of\nabsmax quantization\nto convert the activations from FP16 to INT8 as they need to be in higher precision for the matrix multiplication (×).\nAdditionally, it tracks\nα (\nhighest\nabsolute value\n)\nthat we will use later on for dequantization.\nDequantization\nWe tracked\nα (\nhighest absolute value of activations\n)\nand\nβ (\naverage absolute value of weights\n)\nas those values will help us dequantize the activations  back to FP16.\nThe output activations are rescaled with {\nα\n, γ} to dequantize them to the original precision:\nAnd that’s it! This procedure is relatively straightforward and allows models to be represented with only two values, either\n-1\nor\n1\n.\nUsing this procedure, the authors observed that as the model size grows, the smaller the performance gap between a 1-bit and FP16-trained becomes.\nHowever, this is only for larger models (>30B parameters) and the gab with smaller models is still quite large.\nAll Large Language Models are in 1.58 Bits\nBitNet 1.58b\nwas introduced to improve upon the scaling issue previously mentioned.\n4\nIn this new method, every single weight of the model is not just\n-1\nor\n1\n, but can now also take\n0\nas a value, making it\nternary\n. Interestingly, adding just the\n0\ngreatly improves upon BitNet and allows for much faster computation.\nThe Power of 0\nSo why is adding 0 such a major improvement?\nIt has everything to do with\nmatrix multiplication\n!\nFirst, let’s explore how matrix multiplication in general works. When calculating the output, we multiply a weight matrix by an input vector. Below, the first multiplication of the first layer of a weight matrix is visualized:\nNote that this multiplication involves two actions,\nmultiplying\nindividual weights with the input and then\nadding\nthem all together.\nBitNet 1.58b, in contrast, manages to forego the act of multiplication since ternary weights essentially tell you the following:\n1: I want to add this value\n0: I do not want this value\n-1: I want to subtract this value\nAs a result, you only need to perform addition if your weights are quantized to 1.58 bit:\nNot only can this speed up computation significantly, but it also allows for\nfeature filtering\n.\nBy setting a given weight to 0 you can now ignore it instead of either adding or subtracting the weights as is the case with 1-bit representations.\nQuantization\nTo perform weight quantization BitNet 1.58b uses\nabsmean\nquantization which is a variation of the absmax quantization that we saw before.\nIt simply compresses the distribution of weights and uses the absolute mean (\nα\n) to quantize values. They are then rounded to either -1, 0, or 1:\nCompared to BitNet the activation quantization is the same except for one thing. Instead of scaling the activations to range [\n0\n,\n2ᵇ⁻¹\n], they are now scaled to\n[\n-2ᵇ⁻¹\n,\n2ᵇ⁻¹\n] instead using\nabsmax quantization\n.\nAnd that’s it! 1.58-bit quantization required (mostly) two tricks:\nAdding\n0\nto create ternary representations [-1, 0, 1]\nabsmean quantization\nfor weights\n“\n13B\nBitNet b1.58 is more efficient, in terms of latency, memory usage, and energy consumption than a\n3B\nFP16 LLM”\nAs a result, we get lightweight models due to having only 1.58 computationally efficient bits!\nConclusion\nThis concludes our journey in quantization! Hopefully, this post gives you a better understanding of the potential of quantization, GPTQ, GGUF, and BitNet. Who knows how small the models will be in the future?!\nTo see more visualizations related to LLMs and to support this newsletter, check out the book I wrote on Large Language Models!\nFor more information, see the\nofficial website\n. Order the book on\nAmazon\n. All code will be uploaded to\nGithub\n.\nResources\nHopefully, this was an accessible introduction to quantization! If you want to go deeper, I would suggest the following resources:\nA HuggingFace blog about the\nLLM.int8()\nquantization method: you can find the paper\nhere\n.\nAnother great HuggingFace blog about\nquantization for\nembeddings\n.\nA blog about\nTransformer Math 101\n, describing the basic math related to computation and memory usage for transformers.\nThis\nand\nthis\nare two nice resources to calculate the (\nV)RAM\nyou need for a given model.\nIf you want to know more about\nQLoRA\n5\n, a quantization technique for fine-tuning, it is covered extensively in my upcoming book:\nHands-On Large Language Models\n.\nA truly\namazing YouTube video\nabout\nGPTQ\nexplained incredibly intuitively.\n1\nFrantar, Elias, et al. \"Gptq: Accurate post-training quantization for generative pre-trained transformers.\"\narXiv preprint arXiv:2210.17323\n(2022).\n2\nYou  can find more about GGUF on their\nGGML repository here\n.\n3\nWang, Hongyu, et al. \"Bitnet: Scaling 1-bit transformers for large language models.\"\narXiv preprint arXiv:2310.11453\n(2023).\n4\nMa, Shuming, et al. \"The era of 1-bit llms: All large language models are in 1.58 bits.\"\narXiv preprint arXiv:2402.17764\n(2024).\n5\nDettmers, Tim, et al. \"Qlora: Efficient finetuning of quantized llms.\"\nAdvances in Neural Information Processing Systems\n36 (2024).",
  "metadata": {
    "title": "A Visual Guide to Quantization - by Maarten Grootendorst",
    "description": "Explore the quantization of Large Language Models (LLMs) with 60+ illustrations.",
    "keywords": null,
    "author": "Maarten Grootendorst",
    "og:type": "article",
    "og:title": "A Visual Guide to Quantization",
    "og:description": "Exploring memory-efficient techniques for LLMs",
    "og:image": "https://substackcdn.com/image/fetch/$s_!yYxw!,w_1200,h_675,c_fill,f_jpg,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9d17077-d9af-4b37-9b9b-57ef9aaa1ca9_680x486.png",
    "og:url": "https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-quantization",
    "twitter:title": "A Visual Guide to Quantization",
    "twitter:description": "Exploring memory-efficient techniques for LLMs",
    "twitter:image": "https://substackcdn.com/image/fetch/$s_!ZQfg!,f_auto,q_auto:best,fl_progressive:steep/https%3A%2F%2Fmaartengrootendorst.substack.com%2Fapi%2Fv1%2Fpost_preview%2F145531349%2Ftwitter.jpg%3Fversion%3D4",
    "twitter:card": "summary_large_image",
    "article:modified_time": "2025-03-14T07:05:29.593Z"
  },
  "paywall": {
    "listed_paid": false,
    "detected": false,
    "marker": "",
    "public_only": false,
    "policy": "付费/会员内容只保留页面公开可见部分，不绕过付费墙"
  },
  "crawl": {
    "success": true,
    "status_code": 200,
    "error": ""
  },
  "code_blocks": [],
  "images": [
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!yYxw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9d17077-d9af-4b37-9b9b-57ef9aaa1ca9_680x486.png",
      "bytes": 14671,
      "reused": true,
      "local_path": "attachments/5f7a2ad09c52/images/039.png",
      "src": "https://substackcdn.com/image/fetch/$s_!yYxw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9d17077-d9af-4b37-9b9b-57ef9aaa1ca9_680x486.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!MdLW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0b260f5-da52-4186-bc06-fd22077b2737_590x768.jpeg",
      "bytes": 57995,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-37a6e30fd6cc6a216913.jpeg",
      "src": "https://substackcdn.com/image/fetch/$s_!MdLW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0b260f5-da52-4186-bc06-fd22077b2737_590x768.jpeg",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!cEBd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb99fe2ba-d4f4-4046-850c-e3f469add123_1368x708.png",
      "bytes": 83037,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-dc32bd590f0d0b0ee833.png",
      "src": "https://substackcdn.com/image/fetch/$s_!cEBd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb99fe2ba-d4f4-4046-850c-e3f469add123_1368x708.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!uPBY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8362c0e-0a77-4eda-80a8-8e5e1df4433f_1252x308.png",
      "bytes": 27014,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-f81a9007b095d9769a4d.png",
      "src": "https://substackcdn.com/image/fetch/$s_!uPBY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8362c0e-0a77-4eda-80a8-8e5e1df4433f_1252x308.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!Bn0Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4783fd02-a138-40c7-82c7-79dd05a179e4_1472x772.png",
      "bytes": 89444,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-75f9a86398eadc2f0dae.png",
      "src": "https://substackcdn.com/image/fetch/$s_!Bn0Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4783fd02-a138-40c7-82c7-79dd05a179e4_1472x772.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!owP_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1eafac2a-d027-4d66-95de-7030e0392b39_1796x940.png",
      "bytes": 110477,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-1664249abea53927cecd.png",
      "src": "https://substackcdn.com/image/fetch/$s_!owP_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1eafac2a-d027-4d66-95de-7030e0392b39_1796x940.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!lyUI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff306b7f1-dd3c-4001-91d3-bd61f22c5782_1128x452.png",
      "bytes": 36775,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-72446f6228f3fd56459c.png",
      "src": "https://substackcdn.com/image/fetch/$s_!lyUI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff306b7f1-dd3c-4001-91d3-bd61f22c5782_1128x452.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!cKFl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dbb8398-9f3f-4d9a-b63f-591cb37bdbdd_1144x856.png",
      "bytes": 31974,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-32a512cbde6cd1bf6d93.png",
      "src": "https://substackcdn.com/image/fetch/$s_!cKFl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dbb8398-9f3f-4d9a-b63f-591cb37bdbdd_1144x856.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!iVA3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe146740d-72e9-44dc-99e1-f7bc42737cec_1128x144.png",
      "bytes": 5298,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-515a2c44215d571450ad.png",
      "src": "https://substackcdn.com/image/fetch/$s_!iVA3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe146740d-72e9-44dc-99e1-f7bc42737cec_1128x144.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!VFT5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c28e9b0-c002-4a49-9441-af24f261df40_1128x548.png",
      "bytes": 17168,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-adef97d01f28caf25828.png",
      "src": "https://substackcdn.com/image/fetch/$s_!VFT5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c28e9b0-c002-4a49-9441-af24f261df40_1128x548.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!mrnC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ac8f88-0cf5-4244-ba9f-cbffdb283947_1008x496.png",
      "bytes": 18282,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-5f353fc3565851948858.png",
      "src": "https://substackcdn.com/image/fetch/$s_!mrnC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ac8f88-0cf5-4244-ba9f-cbffdb283947_1008x496.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!G7cr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa33638d8-3506-4471-986f-5960184f98f0_2657x1260.png",
      "bytes": 151814,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-8b93868010186c5802c5.png",
      "src": "https://substackcdn.com/image/fetch/$s_!G7cr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa33638d8-3506-4471-986f-5960184f98f0_2657x1260.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!VLOD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ac888a-02b9-4153-915a-e103a12c33a4_1460x892.png",
      "bytes": 100404,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-82a2947f49a5cca2fd39.png",
      "src": "https://substackcdn.com/image/fetch/$s_!VLOD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ac888a-02b9-4153-915a-e103a12c33a4_1460x892.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!_2X4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F172c93aa-58ae-4d11-8cb7-2917c265cb68_1460x936.png",
      "bytes": 105486,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-6acc071179e7e949f759.png",
      "src": "https://substackcdn.com/image/fetch/$s_!_2X4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F172c93aa-58ae-4d11-8cb7-2917c265cb68_1460x936.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!Wx2P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa37a58d-1f5a-433c-b235-5b073596bbca_1460x848.png",
      "bytes": 89170,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-b7ea58e40b9eb1c941e6.png",
      "src": "https://substackcdn.com/image/fetch/$s_!Wx2P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa37a58d-1f5a-433c-b235-5b073596bbca_1460x848.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!R1o0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F730bbb8a-3a44-47f6-aefe-f652b117ae22_1124x600.png",
      "bytes": 11740,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-eecad680c9b2bb906ec0.png",
      "src": "https://substackcdn.com/image/fetch/$s_!R1o0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F730bbb8a-3a44-47f6-aefe-f652b117ae22_1124x600.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!PeHR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F782beaa8-340f-45b8-ba7f-20491f66867a_1172x848.png",
      "bytes": 57313,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-d2d3b70ca26a9a626ddf.png",
      "src": "https://substackcdn.com/image/fetch/$s_!PeHR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F782beaa8-340f-45b8-ba7f-20491f66867a_1172x848.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!EPy8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cc76e35-13bf-4d6f-94bf-dbe4725c084f_1644x486.png",
      "bytes": 24588,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-2a95c2f432200ae4ac4a.png",
      "src": "https://substackcdn.com/image/fetch/$s_!EPy8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cc76e35-13bf-4d6f-94bf-dbe4725c084f_1644x486.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!eFpM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fd92531-447c-45de-af37-f33ffc446b0b_1644x486.png",
      "bytes": 31350,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-fe38ee4a4dad6ddde62e.png",
      "src": "https://substackcdn.com/image/fetch/$s_!eFpM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fd92531-447c-45de-af37-f33ffc446b0b_1644x486.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!CyAJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe708f283-3c74-4344-ae76-e96412098c0b_1644x246.png",
      "bytes": 12034,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-fc33edcd76b1d9c6b072.png",
      "src": "https://substackcdn.com/image/fetch/$s_!CyAJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe708f283-3c74-4344-ae76-e96412098c0b_1644x246.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!EP4K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ea2d627-efc7-4a8a-9cf0-7a7020f1253d_1236x348.png",
      "bytes": 16252,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-ee2e0f81e9404a113832.png",
      "src": "https://substackcdn.com/image/fetch/$s_!EP4K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ea2d627-efc7-4a8a-9cf0-7a7020f1253d_1236x348.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!QCY6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe173b13b-ed99-4de0-a5e0-4b9114899b3f_1236x372.png",
      "bytes": 17484,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-3bed0ec621f4bb843326.png",
      "src": "https://substackcdn.com/image/fetch/$s_!QCY6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe173b13b-ed99-4de0-a5e0-4b9114899b3f_1236x372.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!-PZj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ffa0c54-88bf-45c1-8636-bdb097bb8e6b_1172x848.png",
      "bytes": 57080,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-7691d254dc40553cfb80.png",
      "src": "https://substackcdn.com/image/fetch/$s_!-PZj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ffa0c54-88bf-45c1-8636-bdb097bb8e6b_1172x848.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!eLfW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cde2f6-aeb5-44d8-b056-846a5f1a0448_1096x508.png",
      "bytes": 31554,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-bf7c2be054a87195edc9.png",
      "src": "https://substackcdn.com/image/fetch/$s_!eLfW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cde2f6-aeb5-44d8-b056-846a5f1a0448_1096x508.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!8ZiT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92ad0583-277f-4168-bbc7-a5503b5e45c4_1096x468.png",
      "bytes": 41058,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-d9d4c9785990f7566295.png",
      "src": "https://substackcdn.com/image/fetch/$s_!8ZiT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92ad0583-277f-4168-bbc7-a5503b5e45c4_1096x468.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!azBk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aee7fd2-c070-4710-9d8c-ccf598d5befe_1016x160.png",
      "bytes": 8581,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-a795d75f37980abd7253.png",
      "src": "https://substackcdn.com/image/fetch/$s_!azBk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aee7fd2-c070-4710-9d8c-ccf598d5befe_1016x160.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!D-hT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01404566-e2ae-4e3f-9101-cafc68d92b40_1172x716.png",
      "bytes": 48321,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-ae460fc5578169649230.png",
      "src": "https://substackcdn.com/image/fetch/$s_!D-hT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01404566-e2ae-4e3f-9101-cafc68d92b40_1172x716.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!p4pT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce7fd7ab-3c4b-401d-893e-d417db946fd8_1172x184.png",
      "bytes": 5208,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-d3546732b16e12a3f638.png",
      "src": "https://substackcdn.com/image/fetch/$s_!p4pT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce7fd7ab-3c4b-401d-893e-d417db946fd8_1172x184.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!Kef9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72052ddb-1c54-45b3-9800-2c4335cc9581_1120x564.png",
      "bytes": 17907,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-1f770ec65a86b211e4a3.png",
      "src": "https://substackcdn.com/image/fetch/$s_!Kef9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72052ddb-1c54-45b3-9800-2c4335cc9581_1120x564.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!dxjd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52511453-ca48-42ca-9818-d1afa6dd7369_1120x408.png",
      "bytes": 36929,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-0fa440c45e717fb4c903.png",
      "src": "https://substackcdn.com/image/fetch/$s_!dxjd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52511453-ca48-42ca-9818-d1afa6dd7369_1120x408.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!SK_-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d79e60e-92ea-4c91-bbdb-297c819cd821_1456x440.png",
      "bytes": 14200,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-6aedb410cbfe4d055eb8.png",
      "src": "https://substackcdn.com/image/fetch/$s_!SK_-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d79e60e-92ea-4c91-bbdb-297c819cd821_1456x440.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!Z7Vv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff24238b2-de53-40c8-8869-9a7d83678544_772x312.png",
      "bytes": 15154,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-149c5d4881a76cd12e48.png",
      "src": "https://substackcdn.com/image/fetch/$s_!Z7Vv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff24238b2-de53-40c8-8869-9a7d83678544_772x312.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!1A2U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6baaee7f-40dd-4f6a-9a8d-bd79a7b2abc7_1456x520.png",
      "bytes": 17568,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-d1b12d031c4f957fd2c1.png",
      "src": "https://substackcdn.com/image/fetch/$s_!1A2U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6baaee7f-40dd-4f6a-9a8d-bd79a7b2abc7_1456x520.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!IPVu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fbb4248-fc4f-4317-b13a-898976010536_1230x672.png",
      "bytes": 82710,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-6ac27d6fe1eb800aacc0.png",
      "src": "https://substackcdn.com/image/fetch/$s_!IPVu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fbb4248-fc4f-4317-b13a-898976010536_1230x672.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!eg1M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fa3761f-0244-48f7-af56-5fb6c1cdd952_1476x756.png",
      "bytes": 57140,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-06e8c80a690b37825284.png",
      "src": "https://substackcdn.com/image/fetch/$s_!eg1M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fa3761f-0244-48f7-af56-5fb6c1cdd952_1476x756.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!j7_K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa593d70-c28a-43e3-b32c-5c7e46186408_1476x876.png",
      "bytes": 93619,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-ec72d019f6f4b8856691.png",
      "src": "https://substackcdn.com/image/fetch/$s_!j7_K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa593d70-c28a-43e3-b32c-5c7e46186408_1476x876.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!05g6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd6825-2a1c-459e-88c0-022a01dcebf2_1194x636.png",
      "bytes": 37325,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-d3880ce1dcb5ad1dd302.png",
      "src": "https://substackcdn.com/image/fetch/$s_!05g6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd6825-2a1c-459e-88c0-022a01dcebf2_1194x636.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!F3IN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc260ef95-2dbf-4f7e-80ba-213ce6623fcd_1230x816.png",
      "bytes": 66526,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-b68d53a2563d714408ba.png",
      "src": "https://substackcdn.com/image/fetch/$s_!F3IN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc260ef95-2dbf-4f7e-80ba-213ce6623fcd_1230x816.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!Qfcl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad39a51b-e47f-44ec-af23-474292719be3_1440x696.png",
      "bytes": 31399,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-b9510c167b4d6df90a34.png",
      "src": "https://substackcdn.com/image/fetch/$s_!Qfcl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad39a51b-e47f-44ec-af23-474292719be3_1440x696.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!YPZV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3eac2072-f4a5-42ca-a251-f934a57d2df5_1146x438.png",
      "bytes": 19660,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-26a8d11200a9f94dbd48.png",
      "src": "https://substackcdn.com/image/fetch/$s_!YPZV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3eac2072-f4a5-42ca-a251-f934a57d2df5_1146x438.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!ULFN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd4b12b9-8b1b-4aa5-8d8c-ab8c1ab23671_1096x332.png",
      "bytes": 16374,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-626ed40ad7a93408dd76.png",
      "src": "https://substackcdn.com/image/fetch/$s_!ULFN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd4b12b9-8b1b-4aa5-8d8c-ab8c1ab23671_1096x332.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!64Vi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86456fdb-ba8f-4545-aa45-a0f4d4c59362_1096x244.png",
      "bytes": 13293,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-911ac98b13cb46cf869d.png",
      "src": "https://substackcdn.com/image/fetch/$s_!64Vi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86456fdb-ba8f-4545-aa45-a0f4d4c59362_1096x244.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!6sJK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf47538b-4a3b-48df-9dbd-dded0ed09ce4_1284x438.png",
      "bytes": 17965,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-0a0b5bcc7e49a48ee224.png",
      "src": "https://substackcdn.com/image/fetch/$s_!6sJK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf47538b-4a3b-48df-9dbd-dded0ed09ce4_1284x438.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!FJ0M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98047d62-3925-4a29-a23b-c5bfa517f073_894x480.png",
      "bytes": 8477,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-088bb0343ad791de25ca.png",
      "src": "https://substackcdn.com/image/fetch/$s_!FJ0M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98047d62-3925-4a29-a23b-c5bfa517f073_894x480.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!KHMy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf159bb5-8158-43e3-bae1-8812fc0fa146_1096x120.png",
      "bytes": 9701,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-0176e11b7f3e8a6f2078.png",
      "src": "https://substackcdn.com/image/fetch/$s_!KHMy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf159bb5-8158-43e3-bae1-8812fc0fa146_1096x120.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!JjnA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3e7f68b-6ce8-45ba-a844-80b5eb0ab2d3_1096x196.png",
      "bytes": 15007,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-24c5cbd19817191a01ee.png",
      "src": "https://substackcdn.com/image/fetch/$s_!JjnA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3e7f68b-6ce8-45ba-a844-80b5eb0ab2d3_1096x196.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!-BJ5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43ca3393-869a-4be3-bf8b-0c52e42017d7_1984x692.png",
      "bytes": 132944,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-d98e8a28725013d6ab25.png",
      "src": "https://substackcdn.com/image/fetch/$s_!-BJ5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43ca3393-869a-4be3-bf8b-0c52e42017d7_1984x692.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!CTAA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad4fa3b-b440-4be3-90bd-b66e219f191e_1368x810.png",
      "bytes": 86100,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-21171d477cffec90fbf1.png",
      "src": "https://substackcdn.com/image/fetch/$s_!CTAA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad4fa3b-b440-4be3-90bd-b66e219f191e_1368x810.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!ETJg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3a17734-65f8-45d7-8e4e-f7bc1c592577_1824x360.png",
      "bytes": 67655,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-c4a60dcb46491ba6e326.png",
      "src": "https://substackcdn.com/image/fetch/$s_!ETJg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3a17734-65f8-45d7-8e4e-f7bc1c592577_1824x360.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!GK9b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa70ee37e-3b4f-4598-8eef-2a9ab13658c1_1200x640.png",
      "bytes": 22135,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-3052b240572a2be82b6a.png",
      "src": "https://substackcdn.com/image/fetch/$s_!GK9b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa70ee37e-3b4f-4598-8eef-2a9ab13658c1_1200x640.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!2hF2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb26d3f00-f599-4c75-beb4-21d87625b1d8_1200x640.png",
      "bytes": 31264,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-5b59e4d06f5054f89489.png",
      "src": "https://substackcdn.com/image/fetch/$s_!2hF2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb26d3f00-f599-4c75-beb4-21d87625b1d8_1200x640.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!8Nr3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3587e75-d631-4ecd-8da9-26fedfc68c53_1364x768.png",
      "bytes": 32989,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-5984e49a163523ea3c55.png",
      "src": "https://substackcdn.com/image/fetch/$s_!8Nr3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3587e75-d631-4ecd-8da9-26fedfc68c53_1364x768.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!1rMN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6b8cbbf-057d-46c9-b275-dab262dd78d5_1364x768.png",
      "bytes": 111527,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-f104391c5a0aa3e14f4e.png",
      "src": "https://substackcdn.com/image/fetch/$s_!1rMN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6b8cbbf-057d-46c9-b275-dab262dd78d5_1364x768.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!n8kW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9806feb5-2212-4fc3-af0b-ef42ae536787_1240x552.png",
      "bytes": 14053,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-089c941358908a930105.png",
      "src": "https://substackcdn.com/image/fetch/$s_!n8kW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9806feb5-2212-4fc3-af0b-ef42ae536787_1240x552.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!Fozn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25935e2a-7643-4705-8961-0b40506fe757_1296x832.png",
      "bytes": 35616,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-fd0f07ff7bd468ddacb5.png",
      "src": "https://substackcdn.com/image/fetch/$s_!Fozn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25935e2a-7643-4705-8961-0b40506fe757_1296x832.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!BTcQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1080b79-6d3c-4dde-a6f1-a354afae4f54_1152x508.png",
      "bytes": 49699,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-8634950c0e689ea97ceb.png",
      "src": "https://substackcdn.com/image/fetch/$s_!BTcQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1080b79-6d3c-4dde-a6f1-a354afae4f54_1152x508.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!QeSG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc69928b-3169-4c35-963b-c25ec218bc12_1260x552.png",
      "bytes": 39649,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-9434f56e96fbe08706d8.png",
      "src": "https://substackcdn.com/image/fetch/$s_!QeSG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc69928b-3169-4c35-963b-c25ec218bc12_1260x552.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!X4Le!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F330cb1bb-9a98-45c1-b140-0fa8038d521f_1296x404.png",
      "bytes": 22554,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-cc9dd771332ca00d34c7.png",
      "src": "https://substackcdn.com/image/fetch/$s_!X4Le!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F330cb1bb-9a98-45c1-b140-0fa8038d521f_1296x404.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!z9il!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f3a7393-5ad4-4375-8382-197c7a5aa442_1048x360.png",
      "bytes": 13659,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-23e1b59c2dffbedf28fc.png",
      "src": "https://substackcdn.com/image/fetch/$s_!z9il!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f3a7393-5ad4-4375-8382-197c7a5aa442_1048x360.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!excD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fed2720-9aa3-4b83-8ba7-4347b2fe1f0d_1048x360.png",
      "bytes": 13590,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-82bdebafeca846aff684.png",
      "src": "https://substackcdn.com/image/fetch/$s_!excD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fed2720-9aa3-4b83-8ba7-4347b2fe1f0d_1048x360.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!wPh-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facda9425-8b3d-47fe-92de-16c33e57613b_1108x512.png",
      "bytes": 46892,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-d63aab34ff0396fd32db.png",
      "src": "https://substackcdn.com/image/fetch/$s_!wPh-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facda9425-8b3d-47fe-92de-16c33e57613b_1108x512.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!TGOI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38ab4a98-2278-465b-8ace-37bbe0807b92_590x768.jpeg",
      "bytes": 57995,
      "reused": false,
      "local_path": "attachments/5f7a2ad09c52/images/body-1d0d6d442b086816bc54.jpeg",
      "src": "https://substackcdn.com/image/fetch/$s_!TGOI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38ab4a98-2278-465b-8ace-37bbe0807b92_590x768.jpeg",
      "alt": "",
      "downloaded": true
    }
  ],
  "audio": [],
  "videos": [
    {
      "url": "https://www.youtube.com/watch?v=mii-xFaPCrA",
      "status": "ok",
      "local_path": "attachments/5f7a2ad09c52/videos/mii-xFaPCrA.mp4",
      "bytes": 39985266,
      "valid": true,
      "height": 1080,
      "width": 1920,
      "duration": "662.261000"
    }
  ],
  "links": [
    {
      "href": "https://tulip-phalange-a1e.notion.site/a947f0efb8eb4813a533b0d957134f6d",
      "label": "Korean",
      "type": "a"
    },
    {
      "href": "https://mp.weixin.qq.com/s/dgS-yRVpGe_w1uzbcVctXg",
      "label": "Chinese",
      "type": "a"
    },
    {
      "href": "https://lbourdois.github.io/blog/Quantification/",
      "label": "French",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!yYxw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9d17077-d9af-4b37-9b9b-57ef9aaa1ca9_680x486.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://github.com/HandsOnLLM/Hands-On-Large-Language-Models",
      "label": "Hands-On Large Language Models",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!MdLW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0b260f5-da52-4186-bc06-fd22077b2737_590x768.jpeg",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://www.llm-book.com/",
      "label": "Official website",
      "type": "a"
    },
    {
      "href": "https://www.amazon.com/Hands-Large-Language-Models-Understanding/dp/1098150961",
      "label": "Amazon",
      "type": "a"
    },
    {
      "href": "https://github.com/handsOnLLM/Hands-On-Large-Language-Models",
      "label": "GitHub",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!cEBd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb99fe2ba-d4f4-4046-850c-e3f469add123_1368x708.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://en.wikipedia.org/wiki/IEEE_754",
      "label": "IEEE-754",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!Bn0Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4783fd02-a138-40c7-82c7-79dd05a179e4_1472x772.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!owP_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1eafac2a-d027-4d66-95de-7030e0392b39_1796x940.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!lyUI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff306b7f1-dd3c-4001-91d3-bd61f22c5782_1128x452.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!cKFl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dbb8398-9f3f-4d9a-b63f-591cb37bdbdd_1144x856.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!VFT5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c28e9b0-c002-4a49-9441-af24f261df40_1128x548.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!mrnC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ac8f88-0cf5-4244-ba9f-cbffdb283947_1008x496.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!G7cr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa33638d8-3506-4471-986f-5960184f98f0_2657x1260.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://pixabay.com/users/slava_web-designer-39623293/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=8668140",
      "label": "Slava Sidorov",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!VLOD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ac888a-02b9-4153-915a-e103a12c33a4_1460x892.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!_2X4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F172c93aa-58ae-4d11-8cb7-2917c265cb68_1460x936.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!Wx2P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa37a58d-1f5a-433c-b235-5b073596bbca_1460x848.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!R1o0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F730bbb8a-3a44-47f6-aefe-f652b117ae22_1124x600.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!PeHR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F782beaa8-340f-45b8-ba7f-20491f66867a_1172x848.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!EPy8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cc76e35-13bf-4d6f-94bf-dbe4725c084f_1644x486.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!eFpM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fd92531-447c-45de-af37-f33ffc446b0b_1644x486.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!EP4K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ea2d627-efc7-4a8a-9cf0-7a7020f1253d_1236x348.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!QCY6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe173b13b-ed99-4de0-a5e0-4b9114899b3f_1236x372.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!-PZj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ffa0c54-88bf-45c1-8636-bdb097bb8e6b_1172x848.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!eLfW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cde2f6-aeb5-44d8-b056-846a5f1a0448_1096x508.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!8ZiT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92ad0583-277f-4168-bbc7-a5503b5e45c4_1096x468.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!D-hT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01404566-e2ae-4e3f-9101-cafc68d92b40_1172x716.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!Kef9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72052ddb-1c54-45b3-9800-2c4335cc9581_1120x564.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!dxjd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52511453-ca48-42ca-9818-d1afa6dd7369_1120x408.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/meta-llama/Meta-Llama-3-8B/tree/main",
      "label": "~20GB file of Llama 3",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!SK_-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d79e60e-92ea-4c91-bbdb-297c819cd821_1456x440.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!Z7Vv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff24238b2-de53-40c8-8869-9a7d83678544_772x312.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!1A2U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6baaee7f-40dd-4f6a-9a8d-bd79a7b2abc7_1456x520.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!IPVu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fbb4248-fc4f-4317-b13a-898976010536_1230x672.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!eg1M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fa3761f-0244-48f7-af56-5fb6c1cdd952_1476x756.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!j7_K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa593d70-c28a-43e3-b32c-5c7e46186408_1476x876.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!05g6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd6825-2a1c-459e-88c0-022a01dcebf2_1194x636.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!F3IN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc260ef95-2dbf-4f7e-80ba-213ce6623fcd_1230x816.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!Qfcl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad39a51b-e47f-44ec-af23-474292719be3_1440x696.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!YPZV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3eac2072-f4a5-42ca-a251-f934a57d2df5_1146x438.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!ULFN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd4b12b9-8b1b-4aa5-8d8c-ab8c1ab23671_1096x332.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!6sJK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf47538b-4a3b-48df-9dbd-dded0ed09ce4_1284x438.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://arxiv.org/pdf/2210.17323",
      "label": "The authors",
      "type": "a"
    },
    {
      "href": "https://www.youtube.com/watch?v=mii-xFaPCrA",
      "label": "this YouTube video",
      "type": "a"
    },
    {
      "href": "https://github.com/turboderp/exllamav2",
      "label": "EXL2",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!FJ0M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98047d62-3925-4a29-a23b-c5bfa517f073_894x480.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!-BJ5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43ca3393-869a-4be3-bf8b-0c52e42017d7_1984x692.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://github.com/ggerganov/llama.cpp/pull/1684",
      "label": "the original pull request",
      "type": "a"
    },
    {
      "href": "https://github.com/ggerganov/llama.cpp/pull/4861",
      "label": "this pull request",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!CTAA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ad4fa3b-b440-4be3-90bd-b66e219f191e_1368x810.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!GK9b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa70ee37e-3b4f-4598-8eef-2a9ab13658c1_1200x640.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!2hF2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb26d3f00-f599-4c75-beb4-21d87625b1d8_1200x640.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://arxiv.org/pdf/2310.11453",
      "label": "BitNet",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!8Nr3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3587e75-d631-4ecd-8da9-26fedfc68c53_1364x768.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!1rMN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6b8cbbf-057d-46c9-b275-dab262dd78d5_1364x768.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!n8kW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9806feb5-2212-4fc3-af0b-ef42ae536787_1240x552.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!Fozn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25935e2a-7643-4705-8961-0b40506fe757_1296x832.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!BTcQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1080b79-6d3c-4dde-a6f1-a354afae4f54_1152x508.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!QeSG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc69928b-3169-4c35-963b-c25ec218bc12_1260x552.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!X4Le!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F330cb1bb-9a98-45c1-b140-0fa8038d521f_1296x404.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://arxiv.org/pdf/2402.17764",
      "label": "BitNet 1.58b",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!z9il!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f3a7393-5ad4-4375-8382-197c7a5aa442_1048x360.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!excD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fed2720-9aa3-4b83-8ba7-4347b2fe1f0d_1048x360.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!wPh-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facda9425-8b3d-47fe-92de-16c33e57613b_1108x512.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!TGOI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38ab4a98-2278-465b-8ace-37bbe0807b92_590x768.jpeg",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/blog/hf-bitsandbytes-integration",
      "label": "LLM.int8()",
      "type": "a"
    },
    {
      "href": "https://arxiv.org/pdf/2208.07339",
      "label": "here",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/blog/embedding-quantization",
      "label": "quantization for",
      "type": "a"
    },
    {
      "href": "https://blog.eleuther.ai/transformer-math/",
      "label": "Transformer Math 101",
      "type": "a"
    },
    {
      "href": "https://huggingface.co/spaces/NyxKrage/LLM-Model-VRAM-Calculator",
      "label": "This",
      "type": "a"
    },
    {
      "href": "https://vram.asmirnov.xyz/",
      "label": "this",
      "type": "a"
    },
    {
      "href": "https://github.com/ggerganov/ggml/blob/master/docs/gguf.md",
      "label": "GGML repository here",
      "type": "a"
    }
  ],
  "repair_version": 2,
  "repaired_at": "2026-10-14T10:47:33Z",
  "source_url": "https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-quantization",
  "papers": [
    {
      "status": "ok",
      "url": "https://arxiv.org/pdf/2210.17323",
      "bytes": 521818,
      "reused": false,
      "local_path": "papers/repair/af396e9b1e330cf9d61c.pdf"
    },
    {
      "status": "ok",
      "url": "https://arxiv.org/pdf/2310.11453",
      "bytes": 586469,
      "reused": false,
      "local_path": "papers/repair/ef00a68c2de8cae7de08.pdf"
    },
    {
      "status": "ok",
      "url": "https://arxiv.org/pdf/2402.17764",
      "bytes": 463748,
      "reused": false,
      "local_path": "papers/repair/3e5780d90861c2950ae6.pdf"
    },
    {
      "status": "ok",
      "url": "https://arxiv.org/pdf/2208.07339",
      "bytes": 719021,
      "reused": false,
      "local_path": "papers/repair/30fa6cd91bee75957c34.pdf"
    }
  ],
  "actual_video_files": [
    {
      "local_path": "attachments/5f7a2ad09c52/videos/mii-xFaPCrA.mp4",
      "bytes": 39985266,
      "valid": true,
      "height": 1080,
      "width": 1920,
      "duration": "662.261000",
      "status": "ok"
    }
  ],
  "body_chars": 26727,
  "expected_body_images": 62,
  "discovery_status": "ok",
  "delivery_status": "ok",
  "missing_reason": "",
  "raw_html": "attachments/5f7a2ad09c52/pages/source.html",
  "local_html": "attachments/5f7a2ad09c52/pages/article.html",
  "body_base_path": "attachments/5f7a2ad09c52/pages/",
  "body_markdown_path": "attachments/5f7a2ad09c52/pages/article.md"
}