Skip to content

Commit 081f542

Browse files
authored
sort djl tables (#5629)
Signed-off-by: sirutBuasai <sirutbuasai27@outlook.com>
1 parent 6ef6e10 commit 081f542

File tree

3 files changed

+38
-4
lines changed

3 files changed

+38
-4
lines changed

docs/src/generate.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import logging
1616
from pathlib import Path
1717

18+
import sorter as sorter_module
1819
from constants import (
1920
AVAILABLE_IMAGES_TABLE_HEADER,
2021
GLOBAL_CONFIG,
@@ -34,7 +35,6 @@
3435
sort_by_version,
3536
)
3637
from jinja2 import Template
37-
from sorter import accelerator_sorter, platform_sorter, repository_sorter
3838
from utils import (
3939
get_framework_order,
4040
load_jinja2,
@@ -44,6 +44,9 @@
4444
write_output,
4545
)
4646

47+
DEFAULT_TIEBREAKERS = [sorter_module.platform_sorter, sorter_module.accelerator_sorter]
48+
49+
4750
LOGGER = logging.getLogger(__name__)
4851

4952

@@ -100,7 +103,11 @@ def _generate_framework_index(
100103
for version in sorted_versions:
101104
sorted_images = sort_by_version(
102105
images_by_version[version],
103-
tiebreakers=[repository_sorter, platform_sorter, accelerator_sorter],
106+
tiebreakers=[
107+
sorter_module.repository_sorter,
108+
sorter_module.platform_sorter,
109+
sorter_module.accelerator_sorter,
110+
],
104111
)
105112

106113
supported = [img for img in sorted_images if img.is_supported]
@@ -290,8 +297,14 @@ def generate_available_images(dry_run: bool = False) -> str:
290297
columns = table_config.get("columns", [])
291298
has_public_registry = check_public_registry(images, repository)
292299

293-
# Sort images by version desc, platform, accelerator
294-
images = sort_by_version(images, tiebreakers=[platform_sorter, accelerator_sorter])
300+
# Sort images by version desc with tiebreakers from config or defaults
301+
tiebreaker_names = table_config.get("tiebreakers")
302+
tiebreakers = (
303+
[getattr(sorter_module, name) for name in tiebreaker_names]
304+
if tiebreaker_names
305+
else DEFAULT_TIEBREAKERS
306+
)
307+
images = sort_by_version(images, tiebreakers=tiebreakers)
295308

296309
# Build table
297310
headers = [col["header"] for col in columns]

docs/src/sorter.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212
# language governing permissions and limitations under the License.
1313
"""Sorting tiebreaker functions for image tables."""
1414

15+
import re
16+
1517
from constants import GLOBAL_CONFIG
18+
from utils import parse_version
1619

1720

1821
def repository_sorter(img) -> int:
@@ -32,3 +35,16 @@ def platform_sorter(img) -> int:
3235
def accelerator_sorter(img) -> int:
3336
"""Accelerator order: GPU before NeuronX before CPU."""
3437
return {"gpu": 0, "neuronx": 1, "cpu": 2}.get(img.get("accelerator", "").lower(), 3)
38+
39+
40+
def engine_sorter(img) -> tuple:
41+
"""Engine order for DJL: LMI before TensorRT-LLM before None, then by version desc."""
42+
engine = img.get("engine", "")
43+
version_match = re.search(r"(\d+(?:\.\d+)*)", engine)
44+
version = parse_version(version_match.group(1)) if version_match else parse_version("0")
45+
engine_lower = engine.lower()
46+
if "lmi" in engine_lower:
47+
return (0, -version.major, -version.minor, -version.micro)
48+
if "tensorrt" in engine_lower:
49+
return (1, -version.major, -version.minor, -version.micro)
50+
return (2, 0, 0, 0)

docs/src/tables/djl-inference.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,8 @@ columns:
1212
header: "Platform"
1313
- field: example_url
1414
header: "Example URL"
15+
16+
tiebreakers:
17+
- platform_sorter
18+
- accelerator_sorter
19+
- engine_sorter

0 commit comments

Comments
 (0)