Push the num variable to Slot #1 in the implementation contract

Dumb solution (but also works)

contract Implementationv2 {
    uint public num1;
    uint public num;

    function setNum(uint _num) public {
        num = _num * 2;
    }
}

Better solution

contract Implementationv2 {
    uint public num1;
    address public _owner;

    function setNum(uint _num) public {
        num = _num * 2;
    }
}