pecos icon indicating copy to clipboard operation
pecos copied to clipboard

XR-Transformer prediction step

Open celsofranssa opened this issue 1 year ago • 2 comments

After training the XTransformer model, I have been trying to generate the predictions as follows:

test_texts, test_texts_rpr = ...
# test_texts: list of 34681 texts
# test_text_rpr: csr_matrix of shape (34681, 52172)

model = self._load_model(...) # XTransformer.load("model")
prediction = model.predict(test_texts, test_texts_rpr)

however, I end up getting the following error:

[2022-08-01 04:51:11,280][pecos.xmc.xtransformer.model][INFO] - Full model loaded from resource/model_checkpoint/XR-TFMR_EURLEX57K_0
[2022-08-01 04:51:11,280][pecos.utils.torch_util][INFO] - Setting device to cuda, number of active GPUs: 1
[2022-08-01 04:51:11,947][pecos.xmc.xtransformer.matcher][INFO] - ***** Encoding data len=34681 truncation=128*****
[2022-08-01 04:51:14,547][pecos.xmc.xtransformer.matcher][INFO] - ***** Finished with time cost=2.5997776985168457 *****
[2022-08-01 04:51:14,547][pecos.xmc.xtransformer.matcher][INFO] - Predict on input text tensors(torch.Size([34681, 128]))
Error executing job with overrides: ['tasks=[predict]', 'data.folds=[0]']
Traceback (most recent call last):
  File "main.py", line 29, in perform_tasks
    predict(params)
  File "main.py", line 15, in predict
    predict_helper.perform_predict()
  File "/home/celso/projects/XMTC-Baselines/source/helper/PredictHelper.py", line 68, in perform_predict
    prediction = model.predict(texts, texts_rpr)
  File "/home/celso/projects/venvs/XMTC-Baselines/lib/python3.8/site-packages/pecos/xmc/xtransformer/model.py", line 588, in predict
    pred_csr = self.concat_model.predict(
  File "/home/celso/projects/venvs/XMTC-Baselines/lib/python3.8/site-packages/pecos/xmc/xlinear/model.py", line 503, in predict
    Y_pred = self.model.predict(
  File "/home/celso/projects/venvs/XMTC-Baselines/lib/python3.8/site-packages/pecos/xmc/base.py", line 1491, in predict
    assert X.shape[1] == self.nr_features
AssertionError

Must X and Xt have the same number of features?

celsofranssa avatar Aug 01 '22 13:08 celsofranssa

Trying to resolve the above error, I ensured that both X (training step csr_matrix) and Xt (prediction step csr_matrix) have the same number of features.

However, the following error has now occurred:


  File "main.py", line 29, in perform_tasks
    predict(params)
  File "main.py", line 15, in predict
    predict_helper.perform_predict()
  File "/home/celso/projects/XMTC-Baselines/source/helper/PredictHelper.py", line 70, in perform_predict
    prediction = model.predict(texts, texts_rpr)
  File "/home/celso/projects/venvs/XMTC-Baselines/lib/python3.8/site-packages/pecos/xmc/xtransformer/model.py", line 588, in predict
    pred_csr = self.concat_model.predict(
  File "/home/celso/projects/venvs/XMTC-Baselines/lib/python3.8/site-packages/pecos/xmc/xlinear/model.py", line 503, in predict
    Y_pred = self.model.predict(
  File "/home/celso/projects/venvs/XMTC-Baselines/lib/python3.8/site-packages/pecos/xmc/base.py", line 1557, in predict
    pred_csr = cur_model.predict(
  File "/home/celso/projects/venvs/XMTC-Baselines/lib/python3.8/site-packages/pecos/xmc/base.py", line 853, in predict
    clib.xlinear_single_layer_predict(
  File "/home/celso/projects/venvs/XMTC-Baselines/lib/python3.8/site-packages/pecos/core/base.py", line 864, in xlinear_single_layer_predict
    raise ValueError("Query matrix does not have sorted indices!")
ValueError: Query matrix does not have sorted indices!

How can I get around this error?

celsofranssa avatar Aug 01 '22 15:08 celsofranssa

Hi @celsofranssa, as the error indicates, your input sparse matrices need to have sorted indices.

jiong-zhang avatar Aug 17 '22 17:08 jiong-zhang