Page MenuHomePhabricator

Pop index out of range exception in revertrisk multi lingual
Closed, ResolvedPublic

Description

From: https://github.com/SWViewer/swviewer-service/issues/1

Repro:

elukey@stat1004:~$ curl https://api.wikimedia.org/service/lw/inference/v1/models/revertrisk-multilingual:predict -X POST -d ' {"lang": "uk", "rev_id": 39814738}'
{"error":"IndexError : pop index out of range"}

Kserve logs:

2023-06-30 07:29:25.400 71 uvicorn.error ERROR [run_asgi():376] Exception in ASGI application
Traceback (most recent call last):
  File "/opt/lib/python/site-packages/uvicorn/protocols/http/h11_impl.py", line 373, in run_asgi
    result = await app(self.scope, self.receive, self.send)
  File "/opt/lib/python/site-packages/uvicorn/middleware/proxy_headers.py", line 75, in __call__
    return await self.app(scope, receive, send)
  File "/opt/lib/python/site-packages/fastapi/applications.py", line 270, in __call__
    await super().__call__(scope, receive, send)
  File "/opt/lib/python/site-packages/starlette/applications.py", line 124, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/opt/lib/python/site-packages/starlette/middleware/errors.py", line 184, in __call__
    raise exc
  File "/opt/lib/python/site-packages/starlette/middleware/errors.py", line 162, in __call__
    await self.app(scope, receive, _send)
  File "/opt/lib/python/site-packages/timing_asgi/middleware.py", line 68, in __call__
    await self.app(scope, receive, send_wrapper)
  File "/opt/lib/python/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
    raise exc
  File "/opt/lib/python/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
    await self.app(scope, receive, sender)
  File "/opt/lib/python/site-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
    raise e
  File "/opt/lib/python/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
    await self.app(scope, receive, send)
  File "/opt/lib/python/site-packages/starlette/routing.py", line 706, in __call__
    await route.handle(scope, receive, send)
  File "/opt/lib/python/site-packages/starlette/routing.py", line 276, in handle
    await self.app(scope, receive, send)
  File "/opt/lib/python/site-packages/starlette/routing.py", line 66, in app
    response = await func(request)
  File "/opt/lib/python/site-packages/fastapi/routing.py", line 235, in app
    raw_response = await run_endpoint_function(
  File "/opt/lib/python/site-packages/fastapi/routing.py", line 161, in run_endpoint_function
    return await dependant.call(**values)
  File "/opt/lib/python/site-packages/kserve/protocol/rest/v1_endpoints.py", line 69, in predict
    response, response_headers = await self.dataplane.infer(model_name=model_name, body=body, headers=headers)
  File "/opt/lib/python/site-packages/kserve/protocol/dataplane.py", line 276, in infer
    response = await model(body, headers=headers)
  File "/opt/lib/python/site-packages/kserve/model.py", line 117, in __call__
    else self.predict(payload, headers)
  File "/srv/revert-risk-model/model-server/model.py", line 102, in predict
    result = KI_module.classify(self.model, request["revision"])
  File "/opt/lib/python/site-packages/knowledge_integrity/models/revertrisk_multilingual/model.py", line 407, in classify
    intermediate_features = extract_features(revision, CLASSIFIER_INTERMEDIATE_FEATURES)
  File "/opt/lib/python/site-packages/knowledge_integrity/models/revertrisk_multilingual/model.py", line 381, in extract_features
    return get_features(feature_sources, features, _transformed_revertrisk_features)
  File "/opt/lib/python/site-packages/knowledge_integrity/featureset.py", line 320, in get_features
    all_features.update(transformer(all_features))
  File "/opt/lib/python/site-packages/knowledge_integrity/models/revertrisk_multilingual/model.py", line 343, in _transformed_revertrisk_features
    edit_info = get_edit_info(
  File "/opt/lib/python/site-packages/knowledge_integrity/models/revertrisk_multilingual/model.py", line 297, in get_edit_info
    actions = et.get_diff()
  File "/opt/lib/python/site-packages/mwedittypes/mwedittypes.py", line 18, in get_diff
    self.tree_diff = get_diff(self.prev_wikitext, self.curr_wikitext, lang=self.lang,
  File "/opt/lib/python/site-packages/mwedittypes/tree_differ.py", line 18, in get_diff
    diff = d.get_corresponding_nodes(debug=debug)
  File "/opt/lib/python/site-packages/mwedittypes/tree_differ.py", line 437, in get_corresponding_nodes
    self.detect_moves(diff)
  File "/opt/lib/python/site-packages/mwedittypes/tree_differ.py", line 502, in detect_moves
    diff[cet].pop(cidx)
IndexError: pop index out of range

Event Timeline

Just noting that this one now works in the newest version of the library: https://edit-types.wmcloud.org/diff-details?lang=uk&revid=39814738

Change 947875 had a related patch set uploaded (by AikoChou; author: AikoChou):

[machinelearning/liftwing/inference-services@main] revert-risk: upgrade knowledge_integrity to v0.3.0

https://gerrit.wikimedia.org/r/947875

Change 947875 merged by jenkins-bot:

[machinelearning/liftwing/inference-services@main] revert-risk: upgrade knowledge_integrity to v0.3.0

https://gerrit.wikimedia.org/r/947875

Change 948103 had a related patch set uploaded (by AikoChou; author: AikoChou):

[operations/deployment-charts@master] ml-services: update revert-risk images and model binary

https://gerrit.wikimedia.org/r/948103

Change 948103 merged by jenkins-bot:

[operations/deployment-charts@master] ml-services: update revert-risk images and model binary

https://gerrit.wikimedia.org/r/948103

achou claimed this task.