v2: add 1024-token long context test
This commit is contained in:
@@ -53,4 +53,37 @@ final class LongContext12BTest: XCTestCase {
|
|||||||
print(" gen[\(i)]: token=\(maxIdx) logit=\(maxVal)")
|
print(" gen[\(i)]: token=\(maxIdx) logit=\(maxVal)")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testLongContext1024Tokens() throws {
|
||||||
|
try XCTSkipIf(model == nil, "12B model not found")
|
||||||
|
|
||||||
|
let promptLength = 1024
|
||||||
|
var tokens = [Int]()
|
||||||
|
for i in 0..<promptLength {
|
||||||
|
tokens.append(100 + (i % 1000))
|
||||||
|
}
|
||||||
|
|
||||||
|
for (pos, tokenId) in tokens.enumerated() {
|
||||||
|
let logits = try model.forward(tokenId: tokenId, position: pos)
|
||||||
|
if pos == 0 || pos == promptLength - 1 || pos % 128 == 0 {
|
||||||
|
let nanCount = logits.filter { $0.isNaN }.count
|
||||||
|
XCTAssertEqual(nanCount, 0, "NaN at pos=\(pos)")
|
||||||
|
print(" pos=\(pos): logits[0..3]=\(logits.prefix(3)) NaN=\(nanCount)")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var genTokens = tokens
|
||||||
|
for i in 0..<5 {
|
||||||
|
let logits = try model.forward(tokenId: genTokens.last ?? 0, position: genTokens.count - 1)
|
||||||
|
let nanCount = logits.filter { $0.isNaN }.count
|
||||||
|
XCTAssertEqual(nanCount, 0, "NaN at gen step \(i)")
|
||||||
|
var maxIdx = 0
|
||||||
|
var maxVal = logits[0]
|
||||||
|
for j in 1..<logits.count {
|
||||||
|
if logits[j] > maxVal { maxVal = logits[j]; maxIdx = j }
|
||||||
|
}
|
||||||
|
genTokens.append(maxIdx)
|
||||||
|
print(" gen[\(i)]: token=\(maxIdx) logit=\(maxVal)")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user