@@ -94,6 +94,11 @@ fn main() -> ExitCode {
94
94
// Determine number of shards based on command line arg and env vars
95
95
let num_shard = find_num_shards ( args. num_shard ) ;
96
96
97
+ // Resolve fast tokenizer path
98
+ let tokenizer_path = resolve_tokenizer_path (
99
+ & args. model_name , args. revision . as_deref ( )
100
+ ) . expect ( "Could not find tokenizer for model" ) ;
101
+
97
102
// Signal handler
98
103
let running = Arc :: new ( AtomicBool :: new ( true ) ) ;
99
104
let r = running. clone ( ) ;
@@ -173,9 +178,6 @@ fn main() -> ExitCode {
173
178
return ExitCode :: SUCCESS ;
174
179
}
175
180
176
- let tokenizer_path = resolve_tokenizer_path ( args. model_name , args. revision )
177
- . expect ( "Could not find tokenizer for model" ) ;
178
-
179
181
// All shard started
180
182
// Start webserver
181
183
info ! ( "Starting Router" ) ;
@@ -546,7 +548,7 @@ fn shutdown_shards(shutdown: Arc<Mutex<bool>>, shutdown_receiver: &mpsc::Receive
546
548
}
547
549
548
550
549
- fn resolve_tokenizer_path ( model_name : String , revision : Option < String > ) -> Result < String , io:: Error > {
551
+ fn resolve_tokenizer_path ( model_name : & str , revision : Option < & str > ) -> Result < String , io:: Error > {
550
552
let cache = env:: var ( "TRANSFORMERS_CACHE" )
551
553
. or_else ( |_| env:: var ( "HUGGINGFACE_HUB_CACHE" ) ) . ok ( ) ;
552
554
let mut model_dir = cache. as_ref ( ) . map (
@@ -558,18 +560,21 @@ fn resolve_tokenizer_path(model_name: String, revision: Option<String>) -> Resul
558
560
}
559
561
}
560
562
if let Some ( dir) = model_dir {
561
- let ref_name = revision. unwrap_or ( "main" . into ( ) ) ;
562
- let ref_path = dir. join ( "refs" ) . join ( & ref_name) ;
563
- let ref_contents = fs:: read_to_string ( ref_path) ?;
563
+ let revision = revision. unwrap_or ( "main" ) ;
564
+ let ref_path = dir. join ( "refs" ) . join ( & revision) ;
565
+ let revision = match ref_path. try_exists ( ) ? {
566
+ true => fs:: read_to_string ( ref_path) ?,
567
+ false => revision. to_string ( ) ,
568
+ } ;
564
569
let tok_path = dir. join ( "snapshots" )
565
- . join ( ref_contents ) . join ( "tokenizer.json" ) ;
570
+ . join ( & revision ) . join ( "tokenizer.json" ) ;
566
571
if tok_path. try_exists ( ) ? {
567
572
Ok ( tok_path. to_string_lossy ( ) . into ( ) )
568
573
} else {
569
574
Err ( io:: Error :: new (
570
575
ErrorKind :: NotFound ,
571
576
format ! (
572
- "Tokenizer file not found in local cache for model {model_name}, revision {ref_name }"
577
+ "Tokenizer file not found in local cache for model {model_name}, revision {revision }"
573
578
)
574
579
) )
575
580
}
0 commit comments