Skip to content

Commit f13b98b

Browse files
committed
Demo app fixes
1 parent 040015c commit f13b98b

File tree

1 file changed

+40
-41
lines changed

1 file changed

+40
-41
lines changed

examples/demo-apps/apple_ios/LLaMA/LLaMA/Application/ContentView.swift

Lines changed: 40 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ extension UIImage {
2323
return UIGraphicsImageRenderer(size: newSize, format: format).image {
2424
_ in draw(in: CGRect(origin: .zero, size: newSize))
2525
}
26-
return image
2726
}
2827

2928
func toRGBArray() -> [UInt8]? {
@@ -180,33 +179,34 @@ struct ContentView: View {
180179
}
181180
}
182181
.navigationBarTitle(title, displayMode: .inline)
183-
.navigationBarItems(leading:
184-
Button(action: {
185-
showingSettings.toggle()
186-
}) {
187-
Image(systemName: "gearshape")
188-
.imageScale(.large)
189-
})
190-
.navigationBarItems(trailing:
191-
HStack {
192-
Menu {
193-
Section(header: Text("Memory")) {
194-
Text("Used: \(resourceMonitor.usedMemory) Mb")
195-
Text("Available: \(resourceMonitor.availableMemory) Mb")
196-
}
197-
} label: {
198-
Text("\(resourceMonitor.usedMemory) Mb")
199-
}
200-
.onAppear {
201-
resourceMonitor.start()
202-
}
203-
.onDisappear {
204-
resourceMonitor.stop()
205-
}
206-
Button(action: { showingLogs = true }) {
207-
Image(systemName: "list.bullet.rectangle")
208-
}
209-
}
182+
.navigationBarItems(
183+
leading:
184+
Button(action: {
185+
showingSettings.toggle()
186+
}) {
187+
Image(systemName: "gearshape")
188+
.imageScale(.large)
189+
},
190+
trailing:
191+
HStack {
192+
Menu {
193+
Section(header: Text("Memory")) {
194+
Text("Used: \(resourceMonitor.usedMemory) Mb")
195+
Text("Available: \(resourceMonitor.usedMemory) Mb")
196+
}
197+
} label: {
198+
Text("\(resourceMonitor.usedMemory) Mb")
199+
}
200+
.onAppear {
201+
resourceMonitor.start()
202+
}
203+
.onDisappear {
204+
resourceMonitor.stop()
205+
}
206+
Button(action: { showingLogs = true }) {
207+
Image(systemName: "list.bullet.rectangle")
208+
}
209+
}
210210
)
211211
.sheet(isPresented: $showingLogs) {
212212
NavigationView {
@@ -247,20 +247,24 @@ struct ContentView: View {
247247
isGenerating = true
248248
shouldStopGenerating = false
249249
shouldStopShowingToken = false
250-
let text = prompt
250+
let text = prompt.trimmingCharacters(in: .whitespacesAndNewlines)
251251
let seq_len = 768 // text: 256, vision: 768
252252
let modelPath = resourceManager.modelPath
253253
let tokenizerPath = resourceManager.tokenizerPath
254-
let useLlama = modelPath.range(of: "llama", options: .caseInsensitive) != nil
254+
let useLlama = modelPath.lowercased().contains("llama")
255255

256256
prompt = ""
257257
hideKeyboard()
258258
showingSettings = false
259259

260+
messages.append(Message(text: text))
261+
messages.append(Message(type: useLlama ? .llamagenerated : .llavagenerated))
262+
260263
runnerQueue.async {
261264
defer {
262265
DispatchQueue.main.async {
263266
isGenerating = false
267+
selectedImage = nil
264268
}
265269
}
266270

@@ -272,10 +276,7 @@ struct ContentView: View {
272276

273277
guard !shouldStopGenerating else { return }
274278
if useLlama {
275-
messages.append(Message(text: text))
276-
messages.append(Message(type: .llamagenerated))
277-
278-
if let runner = runnerHolder.runner, !runner.isloaded() {
279+
if let runner = runnerHolder.runner, !runner.isLoaded() {
279280
var error: Error?
280281
let startLoadTime = Date()
281282
do {
@@ -305,10 +306,7 @@ struct ContentView: View {
305306
}
306307
}
307308
} else {
308-
messages.append(Message(text: text))
309-
messages.append(Message(type: .llavagenerated))
310-
311-
if let runner = runnerHolder.llavaRunner, !runner.isloaded() {
309+
if let runner = runnerHolder.llavaRunner, !runner.isLoaded() {
312310
var error: Error?
313311
let startLoadTime = Date()
314312
do {
@@ -367,7 +365,7 @@ struct ContentView: View {
367365
if token != llava_prompt {
368366
if token == "</s>" {
369367
shouldStopGenerating = true
370-
runnerHolder.runner?.stop()
368+
runnerHolder.llavaRunner?.stop()
371369
} else {
372370
tokens.append(token)
373371
if tokens.count > 2 {
@@ -383,7 +381,7 @@ struct ContentView: View {
383381
}
384382
}
385383
if shouldStopGenerating {
386-
runnerHolder.runner?.stop()
384+
runnerHolder.llavaRunner?.stop()
387385
}
388386
}
389387
}
@@ -394,7 +392,7 @@ struct ContentView: View {
394392
try runnerHolder.runner?.generate(llama3_prompt, sequenceLength: seq_len) { token in
395393

396394
NSLog(">>> token={\(token)}")
397-
if token != llama3_prompt && !shouldStopShowingToken {
395+
if token != llama3_prompt {
398396
// hack to fix the issue that extension/llm/runner/text_token_generator.h
399397
// keeps generating after <|eot_id|>
400398
if token == "<|eot_id|>" {
@@ -458,6 +456,7 @@ struct ContentView: View {
458456
}
459457
runnerQueue.async {
460458
runnerHolder.runner = nil
459+
runnerHolder.llavaRunner = nil
461460
}
462461
switch pickerType {
463462
case .model:

0 commit comments

Comments
 (0)