lookup-merge.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include "ggml.h"
  2. #include "llama.h"
  3. #include "common.h"
  4. #include "ngram-cache.h"
  5. #include <cstdint>
  6. #include <cstdio>
  7. #include <fstream>
  8. #include <iostream>
  9. #include <string>
  10. #include <unordered_map>
  11. #include <vector>
  12. static void print_usage(char* argv0) {
  13. fprintf(stderr, "Merges multiple lookup cache files into a single one.\n");
  14. fprintf(stderr, "Usage: %s [--help] lookup_part_1.bin lookup_part_2.bin ... lookup_merged.bin\n", argv0);
  15. }
  16. int main(int argc, char ** argv){
  17. if (argc < 3) {
  18. print_usage(argv[0]);
  19. exit(1);
  20. }
  21. std::vector<std::string> args;
  22. args.resize(argc-1);
  23. for (int i = 0; i < argc-1; ++i) {
  24. args[i] = argv[i+1];
  25. if (args[i] == "-h" || args[i] == "--help") {
  26. print_usage(argv[0]);
  27. exit(0);
  28. }
  29. }
  30. fprintf(stderr, "lookup-merge: loading file %s\n", args[0].c_str());
  31. llama_ngram_cache ngram_cache_merged = llama_ngram_cache_load(args[0]);
  32. for (size_t i = 1; i < args.size()-1; ++i) {
  33. fprintf(stderr, "lookup-merge: loading file %s\n", args[i].c_str());
  34. llama_ngram_cache ngram_cache = llama_ngram_cache_load(args[i]);
  35. llama_ngram_cache_merge(ngram_cache_merged, ngram_cache);
  36. }
  37. fprintf(stderr, "lookup-merge: saving file %s\n", args.back().c_str());
  38. llama_ngram_cache_save(ngram_cache_merged, args.back());
  39. }