Evaluating Long Range Dependency Handling in Code Generation LLMs
This work addresses the problem of effectively using large context windows in code generation for developers and researchers, but it is incremental as it builds on existing evaluation methods.
The study evaluated code generation LLMs on long-range dependency handling using multi-step key retrieval tasks up to 8k tokens, finding performance degradation up to 2x for backward references and up to 3x improvement with prompt modifications based on call graphs.
As language models support larger and larger context sizes, evaluating their ability to make effective use of that context becomes increasingly important. We analyze the ability of several code generation models to handle long range dependencies using a suite of multi-step key retrieval tasks in context windows up to 8k tokens in length. The tasks progressively increase in difficulty and allow more nuanced evaluation of model capabilities than tests like the popular needle-in-the-haystack test. We find that performance degrades significantly for many models (up to 2x) when a function references another function that is defined later in the prompt. We also observe that models that use sliding window attention mechanisms have difficulty handling references further than the size of a single window. We perform simple prompt modifications using call graph information to improve multi-step retrieval performance up to 3x. Our analysis highlights ways that long-context performance needs deeper consideration beyond retrieval of single facts within a document.