mirror of
https://github.com/langchain-ai/langgraph.git
synced 2026-08-29 19:29:43 +02:00
Performance improvements in core library (#1683)
* Performance improvements in core library - Avoid creating new callback manager when received one as arg - Avoid looking for config when already received one as arg - Avoid copies of values in ensure_config/merge_configs - Implement version of ensure_config that accepts multiple configs (avoids calling merge_configs first) - Avoid calling merge_configs when we only need to attach extra tags/metadata * Fix * Fix * Try again * Debug ci job * Fix * Try again * Try again * Try again * Some more variations * Attach annotation to first changed file * Fix * Re-enable benchmarks
This commit is contained in:
@@ -22,7 +22,7 @@ jobs:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Get changed files
|
||||
id: changed-files
|
||||
uses: Ana06/get-changed-files@v2.2.0
|
||||
uses: Ana06/get-changed-files@v2.3.0
|
||||
with:
|
||||
filter: "libs/cli/**"
|
||||
- name: Set up Python ${{ matrix.python-version }} + Poetry ${{ env.POETRY_VERSION }}
|
||||
|
||||
@@ -34,7 +34,7 @@ jobs:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Get changed files
|
||||
id: changed-files
|
||||
uses: Ana06/get-changed-files@v2.2.0
|
||||
uses: Ana06/get-changed-files@v2.3.0
|
||||
with:
|
||||
filter: "${{ inputs.working-directory }}/**"
|
||||
- name: Set up Python ${{ matrix.python-version }} + Poetry ${{ env.POETRY_VERSION }}
|
||||
|
||||
@@ -27,13 +27,13 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: poetry install --with dev
|
||||
- name: Run benchmarks
|
||||
run: make benchmark
|
||||
run: OUTPUT=out/benchmark-baseline.json make -s benchmark
|
||||
- name: Upload benchmark baseline
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: benchmark-baseline.json
|
||||
path: libs/langgraph/out/benchmark.json
|
||||
compare:
|
||||
name: benchmark-baseline
|
||||
path: libs/langgraph/out/benchmark-baseline.json
|
||||
benchmark:
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
@@ -41,6 +41,11 @@ jobs:
|
||||
needs: [baseline]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- id: files
|
||||
name: Get changed files
|
||||
uses: Ana06/get-changed-files@v2.3.0
|
||||
with:
|
||||
format: json
|
||||
- name: Set up Python 3.11 + Poetry ${{ env.POETRY_VERSION }}
|
||||
uses: "./.github/actions/poetry_setup"
|
||||
with:
|
||||
@@ -50,13 +55,36 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: poetry install --with dev
|
||||
- name: Run benchmarks
|
||||
run: make benchmark
|
||||
id: benchmark
|
||||
run: |
|
||||
{
|
||||
echo 'OUTPUT<<EOF'
|
||||
make -s benchmark
|
||||
echo EOF
|
||||
} >> "$GITHUB_OUTPUT"
|
||||
- name: Download benchmark baseline
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: benchmark-baseline.json
|
||||
path: libs/langgraph/out
|
||||
merge-multiple: true
|
||||
- name: Compare benchmarks
|
||||
run: poetry run pyperf compare_to out/benchmark-baseline.json out/benchmark.json --table --group-by-speed >> $GITHUB_OUTPUT
|
||||
id: compare
|
||||
run: |
|
||||
{
|
||||
echo 'OUTPUT<<EOF'
|
||||
poetry run pyperf compare_to out/benchmark-baseline.json out/benchmark.json --table --group-by-speed
|
||||
echo EOF
|
||||
} >> "$GITHUB_OUTPUT"
|
||||
- name: Annotation
|
||||
run: echo "::notice file=libs/langgraph/bench/__main__.py::$GITHUB_OUTPUT"
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
const file = JSON.parse(`${{ steps.files.outputs.added_modified_renamed }}`)[0]
|
||||
core.notice(`${{ steps.benchmark.outputs.OUTPUT }}`, {
|
||||
title: 'Benchmark results',
|
||||
file,
|
||||
})
|
||||
core.notice(`${{ steps.compare.outputs.OUTPUT }}`, {
|
||||
title: 'Comparison against main',
|
||||
file,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user