MCPcopy Create free account
hub / github.com/Tiiny-AI/PowerInfer / state_write_data

Method state_write_data

smallthinker/src/llama-context.cpp:1754–1830  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1752}
1753
1754size_t llama_context::state_write_data(llama_io_write_i & io) {
1755 LLAMA_LOG_DEBUG("%s: writing state\n", __func__);
1756
1757 // write model info
1758 {
1759 LLAMA_LOG_DEBUG("%s: - writing model info\n", __func__);
1760
1761 const std::string arch_str = llm_arch_name(model.arch);
1762 io.write_string(arch_str);
1763 // TODO: add more model-specific info which should prevent loading the session file if not identical
1764 }
1765
1766 // write output ids
1767 {
1768 LLAMA_LOG_DEBUG("%s: - writing output ids\n", __func__);
1769
1770 const auto n_outputs = this->n_outputs;
1771 const auto & output_ids = this->output_ids;
1772
1773 std::vector<int32_t> w_output_pos;
1774
1775 GGML_ASSERT(n_outputs <= n_outputs_max);
1776
1777 w_output_pos.resize(n_outputs);
1778
1779 // build a more compact representation of the output ids
1780 for (size_t i = 0; i < n_batch(); ++i) {
1781 // map an output id to a position in the batch
1782 int32_t pos = output_ids[i];
1783 if (pos >= 0) {
1784 GGML_ASSERT(pos < n_outputs);
1785 w_output_pos[pos] = i;
1786 }
1787 }
1788
1789 io.write(&n_outputs, sizeof(n_outputs));
1790
1791 if (n_outputs) {
1792 io.write(w_output_pos.data(), n_outputs * sizeof(int32_t));
1793 }
1794 }
1795
1796 // write logits
1797 {
1798 LLAMA_LOG_DEBUG("%s: - writing logits\n", __func__);
1799
1800 const uint64_t logits_size = std::min((uint64_t) this->logits_size, (uint64_t) n_outputs * model.vocab.n_tokens());
1801
1802 io.write(&logits_size, sizeof(logits_size));
1803
1804 if (logits_size) {
1805 io.write(logits, logits_size * sizeof(float));
1806 }
1807 }
1808
1809 // write embeddings
1810 {
1811 LLAMA_LOG_DEBUG("%s: - writing embeddings\n", __func__);

Callers

nothing calls this directly

Calls 10

llm_arch_nameFunction · 0.85
minFunction · 0.85
write_stringMethod · 0.80
resizeMethod · 0.45
writeMethod · 0.45
dataMethod · 0.45
n_tokensMethod · 0.45
getMethod · 0.45
state_writeMethod · 0.45
n_bytesMethod · 0.45

Tested by

no test coverage detected