Buckets:
| namespace neuroflow { | |
| class Tokenizer { | |
| public: | |
| virtual ~Tokenizer() = default; | |
| virtual std::vector<size_t> encode(const std::string& text, size_t max_len = 0) = 0; | |
| virtual std::string decode(const std::vector<size_t>& ids) = 0; | |
| size_t vocab_size() const { return vocab_size_; } | |
| size_t pad_id() const { return pad_id_; } | |
| size_t unk_id() const { return unk_id_; } | |
| size_t bos_id() const { return bos_id_; } | |
| size_t eos_id() const { return eos_id_; } | |
| protected: | |
| size_t vocab_size_ = 128000; | |
| size_t pad_id_ = 0; | |
| size_t unk_id_ = 1; | |
| size_t bos_id_ = 2; | |
| size_t eos_id_ = 3; | |
| size_t max_input_len_ = 128; | |
| }; | |
| class BPETokenizer : public Tokenizer { | |
| public: | |
| BPETokenizer(const std::string& config_path); | |
| BPETokenizer(); | |
| std::vector<size_t> encode(const std::string& text, size_t max_len = 0) override; | |
| std::string decode(const std::vector<size_t>& ids) override; | |
| void add_vocab(const std::string& token, size_t id); | |
| void set_vocab_size(size_t vs); | |
| private: | |
| std::unordered_map<std::string, size_t> vocab_; | |
| std::unordered_map<size_t, std::string> id_to_token_; | |
| std::vector<std::pair<std::string, std::string>> merges_; | |
| std::unordered_map<std::string, size_t> merge_ranks_; | |
| std::vector<uint8_t> utf8_to_bytes(const std::string& text); | |
| std::string bytes_to_utf8(const std::string& raw); | |
| std::string apply_bpe(const std::string& token); | |
| void parse_config(const std::string& content); | |
| }; | |
| class WordPieceTokenizer : public Tokenizer { | |
| public: | |
| WordPieceTokenizer(); | |
| WordPieceTokenizer(const std::string& config_path); | |
| std::vector<size_t> encode(const std::string& text, size_t max_len = 0) override; | |
| std::string decode(const std::vector<size_t>& ids) override; | |
| void add_vocab(const std::string& token, size_t id); | |
| void set_vocab_size(size_t vs); | |
| private: | |
| std::unordered_map<std::string, size_t> vocab_; | |
| std::unordered_map<size_t, std::string> id_to_token_; | |
| void parse_vocab(const std::string& content); | |
| }; | |
| } // namespace neuroflow | |
Xet Storage Details
- Size:
- 2.43 kB
- Xet hash:
- cfa2ffce7f6788a76064605b0ba24763ea593b656600414f48e361b0540cf0ff
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.