### Description

When completing a zero_shot classification task, there is the input sequence (provided by the user), and labels (also provided by the user). 

Tokenization as it is done now tokenizes the input sequence len(labels) times. We should really only do it once and pass those tokenized values to request builder. 

Some of the changes introduce here: https://github.com/elastic/elasticsearch/pull/84777 should make implementing this simpler (as there will be a unified temporary tokenization result object).
x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/inference/nlp/tokenizers/NlpTokenizer.java
return toReturn;
    }
    public TokenizationResult.Tokens tokenize(String seq1, String seq2, Tokenization.Truncate truncate, int sequenceId) {
        var innerResultSeq1 = innerTokenize(seq1);
        List<? extends DelimitedToken.Encoded> tokenIdsSeq1 = innerResultSeq1.tokens;
        List<Integer> tokenPositionMapSeq1 = innerResultSeq1.tokenPositionMap;
        var innerResultSeq2 = innerTokenize(seq2);
        List<? extends DelimitedToken.Encoded> tokenIdsSeq2 = innerResultSeq2.tokens;
        List<Integer> tokenPositionMapSeq2 = innerResultSeq2.tokenPositionMap;
        if (isWithSpecialTokens() == false) {
            throw new IllegalArgumentException("Unable to do sequence pair tokenization without special tokens");
        }
        int extraTokens = getNumExtraTokensForSeqPair();
        int numTokens = tokenIdsSeq1.size() + tokenIdsSeq2.size() + extraTokens;
        boolean isTruncated = false;
        if (numTokens > maxSequenceLength()) {
            switch (truncate) {
                case FIRST -> {
                    isTruncated = true;
                    if (tokenIdsSeq2.size() > maxSequenceLength() - extraTokens) {
                        throw ExceptionsHelper.badRequestException(
                            "Attempting truncation [{}] but input is too large for the second sequence. "
                                + "The tokenized input length [{}] exceeds the maximum sequence length [{}], "
                                + "when taking special tokens into account",
                            truncate.toString(),
                            tokenIdsSeq2.size(),
                            maxSequenceLength() - extraTokens
                        );
                    }
                    tokenIdsSeq1 = tokenIdsSeq1.subList(0, maxSequenceLength() - extraTokens - tokenIdsSeq2.size());