Skip to content

Commit f1549ed

Browse files
feat(unofficial): support 8K/256 sequence (8192/256)
Registers '8k/256' (isl=8192, osl=256) so unofficial-run overlays from sweeps like InferenceX run 25457884421 render instead of being silently dropped by islOslToSequence returning null. - packages/constants/src/models.ts: add 8k/256 to both conversion maps. - packages/app/src/lib/data-mappings.ts: add Sequence.EightK_256 with SEQUENCE_CONFIG entry (label "8K / 256"). Replace the binary 1k-vs-8k ternary in getModelAndSequenceFromArtifact with islOslToSequence so future ISL/OSL pairs registered in constants are picked up automatically rather than mis-mapped. - Tests added for round-trip + label coverage in models.test.ts / models-mapping.test.ts and a dsv4 + 8192/256 case in data-mappings.test.ts. Co-authored-by: Bryan Shan <Oseltamivir@users.noreply.github.com>
1 parent c01af64 commit f1549ed

5 files changed

Lines changed: 37 additions & 8 deletions

File tree

packages/app/src/lib/data-mappings.test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,15 @@ describe('getModelAndSequenceFromArtifact', () => {
124124
expect(result).toEqual({ model: Model.Kimi_K2_5, sequence: Sequence.EightK_OneK });
125125
});
126126

127+
it('parses structured artifact with dsv4 prefix and 8k/256 ISL/OSL', () => {
128+
const result = getModelAndSequenceFromArtifact({
129+
infmax_model_prefix: 'dsv4',
130+
isl: 8192,
131+
osl: 256,
132+
});
133+
expect(result).toEqual({ model: Model.DeepSeek_V4_Pro, sequence: Sequence.EightK_256 });
134+
});
135+
127136
it('returns undefined for unknown model prefix', () => {
128137
const result = getModelAndSequenceFromArtifact({
129138
infmax_model_prefix: 'unknown',
@@ -206,6 +215,7 @@ describe('getSequenceLabel', () => {
206215
expect(getSequenceLabel(Sequence.OneK_OneK)).toBe('1K / 1K');
207216
expect(getSequenceLabel(Sequence.OneK_EightK)).toBe('1K / 8K');
208217
expect(getSequenceLabel(Sequence.EightK_OneK)).toBe('8K / 1K');
218+
expect(getSequenceLabel(Sequence.EightK_256)).toBe('8K / 256');
209219
});
210220

211221
it('falls back to the sequence value for unknown sequence', () => {

packages/app/src/lib/data-mappings.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { islOslToSequence } from '@semianalysisai/inferencex-constants';
2+
13
export enum Model {
24
Llama3_3_70B = 'Llama-3.3-70B-Instruct-FP8',
35
Llama3_1_70B = 'Llama-3.1-70B-Instruct-FP8-KV',
@@ -118,13 +120,15 @@ export enum Sequence {
118120
OneK_OneK = '1k/1k',
119121
OneK_EightK = '1k/8k',
120122
EightK_OneK = '8k/1k',
123+
EightK_256 = '8k/256',
121124
}
122125

123126
const SEQUENCE_CONFIG: Record<Sequence, { label: string; compact: string; category: CategoryTag }> =
124127
{
125128
[Sequence.OneK_OneK]: { label: '1K / 1K', compact: '1k1k', category: 'default' },
126129
[Sequence.OneK_EightK]: { label: '1K / 8K', compact: '1k8k', category: 'deprecated' },
127130
[Sequence.EightK_OneK]: { label: '8K / 1K', compact: '8k1k', category: 'default' },
131+
[Sequence.EightK_256]: { label: '8K / 256', compact: '8k256', category: 'default' },
128132
};
129133

130134
export const SEQUENCE_OPTIONS = Object.keys(SEQUENCE_CONFIG) as Sequence[];
@@ -229,13 +233,10 @@ export function getModelAndSequence(
229233
export function getModelAndSequenceFromArtifact(
230234
artifact: any,
231235
): { model: Model; sequence: Sequence } | undefined {
232-
let seq = '';
233-
seq += artifact.isl === 1024 ? '1k' : '8k';
234-
seq += artifact.osl === 1024 ? '1k' : '8k';
235-
236236
const model = MODEL_PREFIX_MAPPING[artifact.infmax_model_prefix as string];
237-
const sequence = SEQUENCE_PREFIX_MAPPING[seq];
238-
if (model && sequence) {
237+
const seqStr = islOslToSequence(Number(artifact.isl), Number(artifact.osl));
238+
const sequence = seqStr ? (seqStr as Sequence) : undefined;
239+
if (model && sequence && SEQUENCE_CONFIG[sequence]) {
239240
return { model, sequence };
240241
}
241242

packages/app/src/lib/models-mapping.test.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ describe('sequenceToIslOsl', () => {
4848
expect(sequenceToIslOsl('8k/1k')).toEqual({ isl: 8192, osl: 1024 });
4949
});
5050

51+
it('converts 8k/256 to 8192/256', () => {
52+
expect(sequenceToIslOsl('8k/256')).toEqual({ isl: 8192, osl: 256 });
53+
});
54+
5155
it('returns null for unknown sequences', () => {
5256
expect(sequenceToIslOsl('4k/4k')).toBeNull();
5357
expect(sequenceToIslOsl('')).toBeNull();
@@ -67,13 +71,17 @@ describe('islOslToSequence', () => {
6771
expect(islOslToSequence(8192, 1024)).toBe('8k/1k');
6872
});
6973

74+
it('converts 8192/256 to 8k/256', () => {
75+
expect(islOslToSequence(8192, 256)).toBe('8k/256');
76+
});
77+
7078
it('returns null for unknown ISL/OSL combos', () => {
7179
expect(islOslToSequence(4096, 4096)).toBeNull();
7280
expect(islOslToSequence(0, 0)).toBeNull();
7381
});
7482

7583
it('round-trips with sequenceToIslOsl', () => {
76-
for (const seq of ['1k/1k', '1k/8k', '8k/1k']) {
84+
for (const seq of ['1k/1k', '1k/8k', '8k/1k', '8k/256']) {
7785
const islOsl = sequenceToIslOsl(seq)!;
7886
expect(islOslToSequence(islOsl.isl, islOsl.osl)).toBe(seq);
7987
}

packages/constants/src/models.test.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ describe('sequenceToIslOsl', () => {
3939
expect(sequenceToIslOsl('8k/1k')).toEqual({ isl: 8192, osl: 1024 });
4040
});
4141

42+
it('parses 8k/256 to 8192/256', () => {
43+
expect(sequenceToIslOsl('8k/256')).toEqual({ isl: 8192, osl: 256 });
44+
});
45+
4246
it('returns null for unknown sequences', () => {
4347
expect(sequenceToIslOsl('2k/2k')).toBeNull();
4448
expect(sequenceToIslOsl('')).toBeNull();
@@ -55,13 +59,17 @@ describe('islOslToSequence', () => {
5559
expect(islOslToSequence(1024, 8192)).toBe('1k/8k');
5660
});
5761

62+
it('converts 8192/256 to 8k/256', () => {
63+
expect(islOslToSequence(8192, 256)).toBe('8k/256');
64+
});
65+
5866
it('returns null for unmapped ISL/OSL pairs', () => {
5967
expect(islOslToSequence(2048, 2048)).toBeNull();
6068
expect(islOslToSequence(0, 0)).toBeNull();
6169
});
6270

6371
it('round-trips with sequenceToIslOsl for all known sequences', () => {
64-
for (const seq of ['1k/1k', '1k/8k', '8k/1k']) {
72+
for (const seq of ['1k/1k', '1k/8k', '8k/1k', '8k/256']) {
6573
const parsed = sequenceToIslOsl(seq)!;
6674
expect(islOslToSequence(parsed.isl, parsed.osl)).toBe(seq);
6775
}

packages/constants/src/models.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export function sequenceToIslOsl(seq: string): { isl: number; osl: number } | nu
4141
'1k/1k': { isl: 1024, osl: 1024 },
4242
'1k/8k': { isl: 1024, osl: 8192 },
4343
'8k/1k': { isl: 8192, osl: 1024 },
44+
'8k/256': { isl: 8192, osl: 256 },
4445
};
4546
return map[seq] ?? null;
4647
}
@@ -51,6 +52,7 @@ export function islOslToSequence(isl: number, osl: number): string | null {
5152
'1024_1024': '1k/1k',
5253
'1024_8192': '1k/8k',
5354
'8192_1024': '8k/1k',
55+
'8192_256': '8k/256',
5456
};
5557
return map[`${isl}_${osl}`] ?? null;
5658
}

0 commit comments

Comments
 (0)